2015-12-27 33 views
1

番石榴高速緩存可以使用的最大尺寸是多少?我的系統有8GB RAM,因此不會降低系統和其他應用程序的性能。我可以使用多少MB?當RAM存儲不可用時,Guava緩存是否也使用硬盤存儲?番石榴高速緩存可以使用的最大尺寸是多少?

+0

沒有,番石榴緩存是嚴格對堆。它的大小不會有多大,它只是一個奇特的散列圖。 –

回答

4

您只能限制高速緩存中條目的數量。在番石榴中,沒有辦法以兆字節爲單位指定大小限制。 EHCache支持以兆字節爲單位指定大小限制,但是,確定緩存條目的大小是一項艱鉅的任務,涉及一些魔術,猜測和性能開銷。

當RAM存儲不可用時,Guava緩存是否也使用硬盤存儲?

不,它只是Java堆。詳情請參閱CachesExplained · google/guava Wiki

實際上,您從合理但低緩存大小開始,並增加緩存大小,同時保持並關注堆內存消耗。

其實問題「如何調整緩存大小?」不容易回答,通常有經驗和直覺相關。爲拓寬答案一點,給你更多的方向:

先決條件

  • 確保瞭解Java堆和垃圾收集
  • 專有的一般概念/檢查最大堆大小設置的JVM。請參閱:How is the default java heap size determined?
  • 瞭解如何監視和解釋堆消耗和GC活動,例如與VisualVM的,請參閱:http://visualvm.java.net/monitor_tab.html
  • 知道如何從緩存中檢索和統計資料的理解,尤其是命中率
  • 瞭解你的數據,在一個條目中的字節估計大小和活動數據的大小計數設定

規則拇指

  • 目標的90%多的命中率。如果更少,請增加緩存大小,或者瞭解爲什麼緩存不太有效。可能的原因:由於過期時間過短而導致緩存未命中,大量順序掃描。有時你可以改進你的應用程序或者用其他參數來調整緩存大小來優化你的命中率。
  • 對於至少活動數據集大小的10%,第一個「最好的選擇」配置您的緩存大小(以條目數)
+0

我沒有數據分析只是在你的pov如果我目前的內存使用率是50%左右,那麼我可以在緩存中使用100 MB的數據? – agrawal1084

+0

當然,100 MB應該不成問題。但是,請仔細檢查JVM的最大堆大小。我會更新我的答案。 – cruftex