您可能想要嘗試設置此值以生成詳細的堆轉儲,以向您顯示發生了什麼。
-XX:+ HeapDumpOnOutOfMemoryError
在2011年一個典型的 「小」 Java桌面應用程序要與〜64-128MB運行。除非你有非常迫切的需求,否則我會首先將其設置爲默認值(即不設置)。
如果你正在嘗試做一些不同的事情(例如,在Android設備上運行),你將需要非常熟悉分析(並且你應該使用該標籤發佈)。
請記住,如果您要存儲字符數據(Java在內部使用UCS-16),您的100條記錄緩存(〜12個字節)可能(可能)是雙倍。
RE:「不穩定」,JVM正在爲您處理內存使用情況,並根據它選擇的任何算法執行垃圾回收(這些年來這些算法已經發生了巨大變化)。圖表可能只是工具和樣本週期的人爲因素。桌面應用程序的性能受到很多因素的影響。作爲一個例子,我們曾經有過一次巨大的內存「泄漏」,只在一次自動化測試中出現,但從未出現在正常的實際使用情況中。原來測試中,鼠標懸停在一個工具提示上,其中包含打開文件的名稱,而該文件又有一組引用返回到整個(巨大)項目。擺動鼠標幾個像素擺脫了工具提示,這意味着所有的參考清理和垃圾收集器拿出垃圾。
故事的道德?您需要在內存不足時捕獲確切的堆轉儲,並仔細檢查它。
我使用100條記錄(每條記錄約12個字節)從數據庫中獲取數據,所以它始終使用恆定數量的內存來存儲數據庫中的數據 – maks 2011-04-05 18:04:55