2016-04-04 2 views
0

私は、CacheのPut関数のどこにも、sizeof Objectやそれに類似したものが呼び出されていないことはわかりません。では、ehCacheはどのように現在のメモリがいっぱいであるかを知るようになります。 私はそれを得る他の関数があることを知っていますが、明示的に呼び出す必要があります。 私は実行時に知りたい、どのようにmemoeyがいっぱいであるか知っていますか?Ehcache - どのようにehcacheが現在のメモリサイズについて知るのですか

答えて

0

まず、Ehcacheはヒープ上のオブジェクトのサイズを設定します。そしてそれがそうであるとき、サイズ変更はCache.putメソッドではないon-heapストアとARC関連コードの内部で起こります。

コードを追跡する場合は、net.sf.ehcache.store.MemoryStore#putから開始し、net.sf.ehcache.pool.impl.AbstractPoolAccessor#add(java.lang.Object, java.lang.Object, java.lang.Object, boolean)も参照してください。

+0

私はそれを完全に得られませんでした。 – kaka

+0

1。もしあなたがヒープ上に最大バイトのようなメモリ境界を入れたいなら。あなたはオブジェクトのバイト数で測度を持たなければなりませんか? – kaka

+0

キャッシュのヒープストアのサイズをバイト数(maxBytesLocalHeap)に設定すると、実際には新しいputデータの各要素はsizeOfライブラリによってバイト単位でサイズ変更されます...私はLouisが言っていることを理解しています(このsizeOf呼び出しは行われません直接put()メソッドで...ではなく、AbstractPoolAccessor#add)。希望は意味をなさない。 – lanimall

関連する問題