Java gc日志旋转时,带有JVM 8的Wildfly 10挂起

Java gc日志旋转时,带有JVM 8的Wildfly 10挂起,java,garbage-collection,jvm,wildfly-10,Java,Garbage Collection,Jvm,Wildfly 10,我使用的是solaris 10、java 1.8.0_66和Wildfly 10.0.Final。我将GC选项设置为: JAVA_OPTS="$JAVA_OPTS -XX:-HeapDumpOnOutOfMemoryError -verbosegc -XX:+PrintGCDetails -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=30 -XX:GCLogFileSize=1M -XX:+PrintGCDateStamps -XX:-Trac

我使用的是solaris 10、java 1.8.0_66和Wildfly 10.0.Final。我将GC选项设置为:

JAVA_OPTS="$JAVA_OPTS -XX:-HeapDumpOnOutOfMemoryError -verbosegc -XX:+PrintGCDetails -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=30 -XX:GCLogFileSize=1M -XX:+PrintGCDateStamps -XX:-TraceClassUnloading -Xloggc:/mylocation/standalone/log/gc.log"
我让Wildfly运行了几天,最终gc日志文件达到1M。旋转时,gc日志文件被重命名为gc.log.0,并且创建了大小为0的gc.log.1.current。此后,所有日志文件似乎不再有任何活动。server.log文件没有更改,gc.log.1.current没有更改,我无法再通过端口8080访问Wildfly。Wildfly java进程当时挂起。 然后我以1分钟的间隔收集了3个用于wildfly java进程的jstack,它们完全相同,这意味着java进程真的挂起了

有人知道Java8中gc日志文件旋转的相关问题吗


谢谢,Helen

请与jvisualvm联系,了解JVM中发生了什么。您可能还希望在调试模式下启动Wildfly JVM,以便可以附加调试器进行更多调查。还建议使用最新版本1.8.0 y hi Thorbjorn,如果我附加了jvisualvm,我应该监视哪些特定区域,如线程、内存,以监视此问题?在jstack中,我发现大多数线程都处于块状态。嗨,Fairoz,我将尝试最新版本。我对此做了更多的测试,我发现当没有人使用系统时,系统不忙,当gc日志文件旋转时,java进程实际上冻结了大约4分钟,然后系统恢复工作。所以这不像jvm崩溃,只是gc日志旋转时jvm冻结。我可以想象,在生产过程中,冷冻时间会更长。你知道为什么吗?