Krz*_*soń 42 java logging garbage-collection
是否可以在Sun JVM中滚动垃圾收集器日志?
目前我用以下方法生成日志
-XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -verbose:gc -Xloggc:gc.log
Run Code Online (Sandbox Code Playgroud)
但是我必须使用fifo队列和rotatelogs手动旋转它们以创建每天的新日志.我希望有一个更好的解决方案.
也许有一种方法可以从java里面访问这些日志条目,所以我可以将它们重定向到log4j?
编辑:使用fifo队列的解决方案不够好,因为如果从此队列读取的进程(例如rotatelogs)读取速度变慢,则会减慢整个jvm(显然Sun/Oracle会同步执行gc日志记录)
Joh*_*ing 84
HotSpot JVM中添加了对GC日志轮换的内置支持.它在RFE 6941923中有描述,可在以下位置获得:
有三个新的JVM标志可用于启用和配置它:
-XX:+UseGCLogFileRotation-Xloggc:<filename>;-XX:NumberOfGCLogFiles=<number of files>-XX:GCLogFileSize=<number>M (or K)如果无法升级java版本以使用新标志来旋转gc日志,那么每次应用程序启动时都可以指定不同的gc文件:
JAVA_OPTS="-Xms1024m -Xmx1024m -XX:MaxPermSize=256m -verbose:gc -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -Xloggc:/path/to/log/dir/gc.log-"`date +%Y-%m-%d-%H-%M`
Run Code Online (Sandbox Code Playgroud)
引用setenv时,通常在启动或关闭时,它将引用不同的日志文件.在unix中,这可以用作"旋转"日志的方法.