1. A method comprising: adaptively profiling ranges of memory addresses in a stream of memory requests in a processing system to identify a set of contiguous ranges of the memory addresses and corresponding access frequencies in the stream of memory requests, the adaptively profiling being based on a merge threshold value and a split threshold value, the set of contiguous ranges spanning an entire range space of the memory addresses, the merge threshold value indicating a minimum access frequency for each range of memory addresses in the set of contiguous ranges of memory addresses, and the split threshold value indicating a maximum access frequency for each range of memory addresses in the set of contiguous ranges of memory addresses; periodically traversing the set of contiguous ranges of memory addresses and corresponding access frequencies to identify a target set of ranges of the memory addresses having corresponding access frequencies above a predetermined threshold access frequency, the target set of ranges of memory addresses having a total number of ranges less than or equal to a predetermined number of ranges and the target ranges of memory addresses spanning at least some of the entire range space of memory addresses; and performing a first operation using ranges of memory addresses in the target set of ranges of memory addresses.