1. A method in a data processing system, the method comprising: in a set-associative cache memory having a plurality of congruence classes each including multiple entries for storing cache lines of data, maintaining a bank of counters including a respective one of a plurality of counters for each cache line stored in the plurality of congruence classes; the cache memory selecting victim cache lines for eviction from the cache memory by reference to counter values of counters within the bank of counters, wherein the selecting includes pre-selecting only one single respective victim cache line for eviction in each of the plurality of congruence classes in advance of receipt by the cache memory of any memory access request that causes one of the victim cache lines to be evicted from the cache memory, and wherein selection of each single victim cache line is fixed regardless of any intervening accesses between selection and eviction of said each single victim cache line; determining a dynamic distribution, at a given time, of counter values across counters within the bank of counters; and in response to the determining, adapting an amount counter values of counters within the bank of counters are adjusted on a cache miss based on the dynamic distribution of the counter values.