Java-高级保留空间内存不足
我正在调试一个Heroku dyno上的内存问题,它的内存Java-高级保留空间内存不足,java,heroku,Java,Heroku,我正在调试一个Heroku dyno上的内存问题,它的内存512M。经过多次的戳戳和戳戳,我想我已经把它缩小到了课堂空间,因为某种原因没有清理干净。下面是jcmd VM.native_内存摘要的输出: Java Heap (reserved=163840KB, committed=163840KB) (mmap: reserved=163840KB, committed=163840KB) Class (reserved=1120210KB, committed=80466KB) (
512M
。经过多次的戳戳和戳戳,我想我已经把它缩小到了课堂空间,因为某种原因没有清理干净。下面是jcmd VM.native_内存摘要的输出:
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\u选项
:
-Xmx160m
-Xss512k
-XX:MaxMetaspaceSize=128M
-XX:NativeMemoryTracking=detail
-XX:+UnlockDiagnosticVMOptions
-XX:+UseSerialGC
你知道为什么Class
仍然保留了超过一格的内存吗?再说一次,我甚至不能完全确定班级空间是问题所在,所以任何帮助都是非常感谢的
请注意,我使用的是一些Groovy代码,在类加载器领域可能会非常嘈杂。Java8为压缩类指针保留1GB内存。如果您想让它保留更少的内存,可以使用
CompressedClassSpaceSize
jvm参数。本文和本文中的一些其他详细信息来自oracle
请注意,从《oracle指南》来看,当使用
UseCompressedOops
和UseCompressedClassSpoInters
jvm参数时,java似乎只保留1GB,但出于某种原因,它们决定不提默认情况下它们是打开的。请看这个问题,我认为您的问题是重复的。@Oleg很好的回答,但我既没有使用-XX:+UseCompressedClassPointers
也没有使用-XX:+UseCompressedDoops
,这会在这方面引起问题,保留参考问题中提到的1G。我的问题不同,因为CompressedClassSpaceSize
不应该应用。你能用jcmd VM.flags检查一下吗?
我想它们默认是打开的。你是个救生员。请添加您的答案并指向另一个问题。我将把它标记为已接受的答案。