1
我正在調試內存爲512M
的Heroku dyno上的內存問題。經過大量的戳和刺激,我認爲我已經縮小到類空間沒有得到清理出於某種原因。下面是jcmd <pid> VM.native_memory summary
輸出:Java - 高級保留空間內存不足
Java Heap (reserved=163840KB, committed=163840KB)
(mmap: reserved=163840KB, committed=163840KB)
Class (reserved=1120210KB, committed=80466KB)
(classes #14208)
(malloc=2002KB #18418)
(mmap: reserved=1118208KB, committed=78464KB)
Thread (reserved=26165KB, committed=26165KB)
(thread #45)
(stack: reserved=25776KB, committed=25776KB)
(malloc=144KB #222)
(arena=244KB #89)
Code (reserved=256694KB, committed=42130KB)
(malloc=7094KB #10281)
(mmap: reserved=249600KB, committed=35036KB)
GC (reserved=569KB, committed=569KB)
(malloc=29KB #279)
(mmap: reserved=540KB, committed=540KB)
Compiler (reserved=217KB, committed=217KB)
(malloc=86KB #290)
(arena=131KB #3)
Internal (reserved=3116KB, committed=3116KB)
(malloc=3084KB #16726)
(mmap: reserved=32KB, committed=32KB)
Symbol (reserved=19560KB, committed=19560KB)
(malloc=15812KB #163798)
(arena=3748KB #1)
Native Memory Tracking (reserved=3649KB, committed=3649KB)
(malloc=292KB #4629)
(tracking overhead=3357KB)
Arena Chunk (reserved=198KB, committed=198KB)
(malloc=198KB)
這裏是我的JAVA_OPTS
:
-Xmx160m
-Xss512k
-XX:MaxMetaspaceSize=128M
-XX:NativeMemoryTracking=detail
-XX:+UnlockDiagnosticVMOptions
-XX:+UseSerialGC
任何想法,爲什麼Class
仍保留內存大於演出嗎?再次,我甚至不完全確定課堂空間是問題,所以任何幫助表示讚賞。
請注意,我正在使用一些Groovy代碼,這在類加載器領域可能相當嘈雜。
看到這個問題https://stackoverflow.com/questions/31075761/java-8-reserves-minimum-1g-for-metaspace-despite-maxmetaspacesize我認爲你的問題是它的重複。 – Oleg
@Oleg好的,但我沒有使用-XX:+ UseCompressedClassPointers或'-XX:+ UseCompressedOops',這會導致這個區域出現問題,根據https:/ /docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/considerations.html#sthref66。我的問題是不同的,因爲'CompressedClassSpaceSize'不應該應用。 – Andy
你能檢查'jcmd VM.flags'我認爲它們默認是開啓的。 –
Oleg