2017-03-16 80 views
1

我使用solaris 10,Wildfly 10和java 1.8.0_66。JVM gc日志不旋转

我想使GC日志旋转,只要我设置以下参数:

-XX:+UseGCLogFileRotation 
-XX:NumberOfGCLogFiles 
-XX:GCLogFileSize 
-Xloggc 

应该转动。

我设置JVM PARAMS是

JAVA_OPTS="$JAVA_OPTS -XX:-HeapDumpOnOutOfMemoryError -verbosegc -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=50 -XX:GCLogFileSize=5K -XX:+PrintGCDateStamps -Xloggc:/mylocation/standalone/log/gc.log" 

它不旋转。看来我必须添加参数-XX:+PrintGCDetails才能使gc日志文件旋转。

我的理解错了吗?或者我错过任何设置,因此它不会旋转?

谢谢,海伦

+0

你说的“不旋转”的意思是,这是否意味着一个文件被创建并没有转动呢?或者这意味着没有创建文件? – Adonis

+0

只有第一个gc文件'gc.log.0.current'被创建,并且文件大小随着gc日志的增加而增加。但即使'gc.log.0.current'文件大小超过5k,它也不会旋转到新文件,它仍然使用相同的文件'gc.log.0.current',并且文件大小不断增长。没有创建其他gc文件。 – Helen

+0

看来gc日志文件大小最小是8K,所以当我设置为5K时,jvm设置为默认值8K。这也许是它不以5K旋转的原因。 – Helen

回答

2

看来你已经想通了这一点你自己。即使您尝试设置较少,GCLogFileSize在JDK中的最小值为8KB。下面是从HotSpot sources相关片段:

if (UseGCLogFileRotation && (GCLogFileSize != 0) && (GCLogFileSize < 8*K)) { 
    FLAG_SET_CMDLINE(uintx, GCLogFileSize, 8*K); 
    jio_fprintf(defaultStream::output_stream(), 
       "GCLogFileSize changed to minimum 8K\n"); 
    } 
+0

您也可以参考oracle文档[here](http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html#DebuggingOptions) –