堆内存每次都会触及新高

Sur*_*jan 6 java heap-memory

jconsole堆图

我的图表中的窥视每次都触及新高.我的vm参数如下,

-XX:+UseCompressedOops -XX:+TieredCompilation -Xms1303m -Xmx1303m -XX:MaxPermSize=256m -Djava.net.preferIPv4Stack=true -Dorg.jboss.resolver.warning=true -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000
Run Code Online (Sandbox Code Playgroud)

辩论是好还是错?

Pet*_*rey 1

这对我来说看起来很正常。

对象在 Eden 空间中创建,您似乎拥有大约 400 MB 的 Eden。(峰值和最小内存使用量之间的大小)

这表明您每 3 小时大约创建 3 个此类文件,即大约 400 MB/小时。注意:您的监控工具可能会产生大量甚至大部分垃圾。

每次次要收集后,幸存的对象都会添加到 Survivor 空间中。一旦这些对象被复制足够多次,它们就会被添加到永久空间中。

当您使用 JMX / RMI 时,这可能是 eden 和保留对象中产生垃圾的主要原因。我建议您重新连接并执行完整 GC。这会让您知道实际保留了多少。

如果完整 GC 后保留的数量不断增加,则可能存在内存泄漏。