2017-07-14 30 views
1

我們正在使用JDK 8,並且我們的一些進程正在給OOM提供「壓縮類空間」。我們正在記錄GC和我們的jvm statistics.log文件目前提供以下類型的日誌條目java如何跟蹤和調整壓縮類空間

2017-06-30 03:57:07,944信息 - 堆 - [用法:1678.7,FREE:986.7,總計:2665.5 ,MAX:2665.5]; PERM - [用法:N/A,FREE:N/A,MAX:N/A]; CLASSES - [Loaded:1832624,Unloaded:637,Left:1831987];帖子 - [計數:92]

我們想知道,如果加上標誌「-XX:+ TraceClassUnloading -XX:+ TraceClassLoading」將讓我們知道什麼樣的價值,我們應該爲「壓縮類空間」設置(-XX :CompressedClassSpaceSize)?如果是,我們如何確定跟蹤日誌的大小?

+3

如果您不知道該選項的最佳值是什麼,請不要指定該選項並讓JVM選擇。如果您認爲1832624班的安靜程度很大,您可以檢查應用程序中的泄漏情況。 – Holger

回答

2

您可以使用-XX:-UseCompressedClassPointers來禁用壓縮類空間,該類空間應允許JVM加載適合內存的類,而不是有限的壓縮類虛擬內存區。缺點是對象頭文件中的類指針較大。

但正如@Holger在評論中提到的,您應該確保您的應用程序不會隨着時間流逝而泄漏課程,否則內存消耗將不斷增長。

+0

我們的應用程序使用JAXB。我懷疑我們可能會遇到這個問題:https://stackoverflow.com/questions/3259291/do-i-have-a-jaxb-classloader-leak – anjanb