In some use cases it isn't ideal to evict a file from cache when the last session that references the file is closed. For example if an application then immediately opens a reference to that file in another session - the cache would need to be populated again.
A solution would be to not have the close tied to session close, but have the eviction server monitor for files that don't have references and have been closed for a certain period of time (30 seconds?)
The reproducing case for this is the LevelDB benchmark implementation. Each operation happens in a different thread, and sessions are also tied to the life of a thread.