我正在調(diào)查 OutOfMemoryError:壓縮類空間問題。我認為,我找到了根本原因和解決方案(Hibernate Validator 方法調(diào)用 JAXBContext.newInstance():用戶每次提交操作后的 buildValidatorFactory),但在我的研究過程中,我注意到一件令人困惑的事情。我嘗試運行 jcmd VM.native_memory 和 jstat -gc 來跟蹤類提交大小和 CCSU(壓縮類空間使用情況):d:\experiments>jcmd 59692 VM.native_memory summaryNative Memory Tracking:Total: reserved=10039335KB, committed=889895KB- Java Heap (reserved=8353792KB, committed=522240KB) (mmap: reserved=8353792KB, committed=522240KB)- Class (reserved=1072460KB, **committed=24268KB**) (classes #2518) (malloc=9548KB #2393) (mmap: reserved=1062912KB, committed=14720KB)和d:\experiments>jstat -gc 59692 2s S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT CGC CGCT GCT21504,0 21504,0 0,0 0,0 131072,0 56218,7 139264,0 7755,5 14976,0 14318,5 1920,0 1721,7 2 0,012 1 0,036 - - 0,048我預(yù)計 NMT 中的“類提交”指標(biāo)和 jstat 中的 CCSU 指標(biāo)之間沒有重大差異,但 jstat 顯示大約僅 1,72 MB 的已用內(nèi)存,而類提交的已使用內(nèi)存超過 24 MB。因此,我生成了 GC.class_stats 統(tǒng)計數(shù)據(jù),它顯示 KlassBytes 約為 1738616 B -> 1,739 MB - 因此它與 CCSU 中 jstat 顯示的值大致相同。我還發(fā)現(xiàn)其余的元數(shù)據(jù)(如方法、常量等)占用了大約 14,44 MB(這與 mmap 中的值大致相同:commited=14720KB - 但我不知道這個數(shù)字是多少)。那么剩下的部分在哪里呢?NMT給出的數(shù)字到底是多少?
1 回答

MMMHUHU
TA貢獻1834條經(jīng)驗 獲得超8個贊
Class
本機內(nèi)存跟蹤報告中的部分顯示了元空間和壓縮類空間的聚合數(shù)量。
Java 進程的內(nèi)存占用演示文稿中的幻燈片
jstat 指標(biāo)MC
,?MU
,CCSC
和CCSU
代表
元空間容量
使用的元空間
壓縮類空間容量
已使用的壓縮類空間
因此,本機內(nèi)存跟蹤顯示的提交類與 jstat 指標(biāo)相關(guān),具有以下不等式:
Class?Committed?>=?MC?+?CCSC?>=?MU?+?CCSU
然而,它們之間的差異可以是任意大的。
從 JDK 10 開始,本機內(nèi)存跟蹤報告顯示了以下部分的詳細細分Class
:
-?????Class?(reserved=1073841KB,?committed=28593KB) ????????????(classes?#3967) ????????????(??instance?classes?#3694,?array?classes?#273) ????????????(malloc=689KB?#9228)? ????????????(mmap:?reserved=1073152KB,?committed=27904KB)? ????????????(??Metadata:???) ????????????(????reserved=24576KB,?committed=24576KB) ????????????(????used=24131KB) ????????????(????free=445KB) ????????????(????waste=0KB?=0.00%) ????????????(??Class?space:) ????????????(????reserved=1048576KB,?committed=3328KB) ????????????(????used=3003KB) ????????????(????free=325KB) ????????????(????waste=0KB?=0.00%)
添加回答
舉報
0/150
提交
取消