0
我有一個巨大的堆(大約100GB)的應用程序,並且在初始化過程中它將幾乎所有的可用內存分配給不同的緩存。問題在於,這個初始化階段分配了大量的對象,導致舊的令人痛苦的去碎片化。所以我的想法是強制完整的gc作爲初始化階段的最後一步,以便對齊/壓縮舊的代碼並降低運行時「併發模式故障」的概率。如何在sun/oracle jvm上強制執行完整的gc,在舊版本中執行內存對齊/壓縮
有什麼辦法強制這樣一個集合?
感謝
我有一個巨大的堆(大約100GB)的應用程序,並且在初始化過程中它將幾乎所有的可用內存分配給不同的緩存。問題在於,這個初始化階段分配了大量的對象,導致舊的令人痛苦的去碎片化。所以我的想法是強制完整的gc作爲初始化階段的最後一步,以便對齊/壓縮舊的代碼並降低運行時「併發模式故障」的概率。如何在sun/oracle jvm上強制執行完整的gc,在舊版本中執行內存對齊/壓縮
有什麼辦法強制這樣一個集合?
感謝
基本上,你應該用盡你的記憶,然後打電話給gc
應該工作。
考慮這樣http://www.informit.com/articles/article.aspx?p=19703
你也可以試試這個https://stackoverflow.com/a/6915221/1137529但我不知道是否會實際工作的罰款。
'System.gc()'? – fge 2012-01-03 10:38:49
那麼根據javadoc它不能保證gc會觸發。 – Tomek 2012-01-03 15:59:46
我不認爲有什麼保證,但也許我錯了 – fge 2012-01-03 16:04:13