Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-高级保留空间内存不足_Java_Heroku - Fatal编程技术网

Java-高级保留空间内存不足

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) (

我正在调试一个Heroku dyno上的内存问题,它的内存
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检查一下吗?
我想它们默认是打开的。你是个救生员。请添加您的答案并指向另一个问题。我将把它标记为已接受的答案。