使用VisualVM的和检查的Tomcat 8.5 catalina.out的日志我看到几乎每次(7的11倍左右)时完整的GC发生日志显示OutOfMemory(在完全相同的分钟)。Java的8个全GC和内存溢出的Java堆空间
对于Tomcat 参数有事可做内存管理:-Xms3G -Xmx = 6G -XX:+ UseG1GC -XX:+ UseStringDeduplication -XX:MaxHeapFreeRatio = 100
在第一我认为这是因为默认-XX:MaxHeapFreeRatio值是,因为我看到了最大值。堆大小(当然使用的堆)将在全满GC - 至〜10-20%期间显着下降。但是,添加XX:MaxHeapFreeRatio = 100没有解决它。
虽然这是内存使用图形与不同集JVM的参数(不能得到一个与旧JVM参数ATM)是经过充分的GC存储的方式类似用法快速增长,最大值相同堆大小和最大值。堆大小不会下降。
任何想法,为什么这可能发生?
更新:我忘了提,以前完整的GC和内存不足会发生当堆大小甚至不是全 - 〜5GB。当时没有一次我看到堆达到6GB。
您应该调整这些JVM GC参数:http://blog.sokolenko.me/2014/11/javavm-options-production.html – duffymo
在提出类似问题之前,请执行一些分析,例如,您可以使用YourKit。 在你的情况下,它可能发生,因为GC无法跟上太多的对象被创建和释放在短时间内。 – tsolakp