2012-11-12 100 views
5

我在我的應用程序中使用ehcache和兵馬俑。當我用兵馬俑使用ehcache時,我的響應時間增加了700倍。我認爲兵馬俑需要時間測量物體的大小,因爲它給我的警告:當使用ehcache和兵馬俑時IgnoreSizeOf註釋

net.sf.ehcache.pool.sizeof.ObjectGraphWalker checkMaxDepth 警告: 1000所對象引用的配置的限制已達到而 試圖計算對象圖的大小。如果調整操作繼續,則可能發生嚴重的性能下降。 這可以通過設置CacheManger或緩存 元件maxDepthExceededBehavior爲「中止」或加入終止點 與@IgnoreSizeOf註解來避免。如果在配置的限制下性能下降不是 問題,請使用CacheManager或緩存元素maxDepth屬性提高限制值。有關 的更多信息,請參閱Ehcache配置文檔。

當我在我的課上使用了@IgnoreSizeOf註釋時,響應時間減少了很多。我的問題是使用@IgnoreSizeOf註釋有什麼缺點。爲什麼它正在使用以及它如何減少我的應用程序的響應時間請幫助。 在此先感謝。

回答

7

這個註解是不相關的兵馬俑集羣。我想你在這個問題上發佈了其他問題。

@IgnoreSizeOf註釋將具有sizeOfEngine,它用於度量緩存中條目的內存佔用量,忽略緩存條目的註釋類(或整個包)或子圖(註釋字段)的實例。

因此,如果您高速緩存有一個「共享」子對象圖,你會註釋字段如該圖開始與註釋。如果忽略一切然後什麼將大小和maxBytesLocalHeap設置沒有語義(你最終會從OOME苦)。

你需要了解你緩存的對象圖,以便正確使用註釋。有關更多詳細信息,請參見http://ehcache.org/documentation/configuration/cache-size#built-in-sizing-computation-and-enforcement

現在,你看到的性能問題,則可能需要使用和不使用maxBytesLocalHeap設置,使用和不使用集羣進行測試,以儘量針點您的問題。但我懷疑你可能會更緩存比您預期,導致大男人的足跡,以及開銷集羣中的數據...

+0

雅很深遠OOME,這就是爲什麼我設置maxBytesLocalHeap。認爲它可以解決我的OOM問題 – user1147070

+0

這就是事實......再說一次,在使用註釋時沒有性能影響,相反。然而,它們是測試添加到緩存中的對象圖表的一種性能影響(放置)。影響有多大,可能大部分取決於圖表的大小......但通常這些並不太大,但條目可以引用「共享」圖表。在確定尺寸時應該忽略這一點,使用該註釋。 –