Unfortunately what you are seeing is how LIRS is designed to work. It keeps what it calls a non resident block for entries that were removed due to changing from a HIR resident (in cache) to a HIR non resident (not in cache, but has placeholder). Those objects you are seeing are placeholders stored so that if that object is referenced again it can be promoted to LIR due to being referenced again. If you look at LIRS caching algorithm - Wikipedia, the free encyclopedia the (a) state is the starting state. The b, c, d, and e states are each one step from a. In this case you have the e state, where each insertion is removing a previous entry from stack Q and then making that entry a non resident. By having an access you are reordering the stack S and allowing us to remove old reference blocks.