やりたかったこと
EHCacheを使って、揮発するCacheを作る。そのとき、getする前に揮発したことを検知して、特定の処理を行なう、みたいな処理をしたかった。
ので、揮発しないHeapでsizeを保存しておき、必要なときにgetSizeを呼び出して揮発をチェックしようとした。
Cache.getSizeの挙動
ところがCache.getSizeの挙動は厳密ではない。少なくとも揮発したレコードの値が反映されるまで少々掛かる。
英語読めないが(笑)多分そんなようなことが書いてある。厳密なsizeを求めたいときはgetKeysWithExpiryCheck().size()を使えば良さそうだ。
とはいえ非常に重い処理だと思われるので、そもそも頻繁に揮発のチェックをするのは、原理的に無理だと思った方が良さそうだ。