我們收集了隨着時間推移增長得相當大的對象。我們實施了緩存策略來幫助緩解這一問題,但是,如果在啓動時沒有分配足夠的內存,我們仍然會在運行時耗盡堆空間。動態分配緩存大小以緩解堆空間錯誤
是否有標準的機制來減少運行時緩存的大小以消除這些OutOFMemory錯誤?這樣,如果我們的進程以比正常情況更小的內存片開始,我們可以希望避免服務器死機。
我意識到這是一個錯誤類型,因此不應該被捕獲/處理,因爲它通常表示更嚴重的問題。
是它具有一些如下的簡單:
private static final long RECOMMENDED_MEMORY = 1073741824L; //Example 1 Gig
private static int recommendedCacheSize = 100; //Example of 100 items
long heapSize = Runtime.getRuntime().totalMemory();
double size = Math.floor((double) heapSize/RECOMMENDED_MEMORY * recommendedCacheSize);
recommendedCacheSize = ++size;
注意:這是在Tomcat中運行。 – Scott 2010-09-28 14:31:52
緩存是使用軟參考還是弱參考構建的? – 2010-09-28 14:41:34