java - java中的滚动垃圾收集器日志

标签 java logging garbage-collection

是否可以在 Sun JVM 中滚动垃圾收集器日志?

目前我使用以下方法生成日志:

-XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -verbose:gc -Xloggc:gc.log 

但我必须使用 fifo 队列和 rotatelogs 手动轮换它们,以便每天创建一个新日志。我希望有更好的解决方案。

也许有一种方法可以从 java 内部访问此日志条目,以便我可以将它们重定向到 log4j?

编辑:使用 fifo 队列的解决方案不够好,因为如果从该队列读取的进程(例如 rotatelogs)读取速度变慢,它将减慢整个 jvm(显然 Sun/Oracle 同步执行 gc 日志记录)

最佳答案

HotSpot JVM 添加了对 GC 日志轮换的内置支持。 它在 RFE 6941923 中有描述。并且可用于:

可以使用三个新的 JVM 标志来启用和配置它:

  • -XX:+UseGCLogFileRotation
    必须与-Xloggc:<filename> 一起使用;
  • -XX:NumberOfGCLogFiles=<number of files>
    必须>=1,默认为1;
  • -XX:GCLogFileSize=<number>M (or K)
    默认设置为 512K。

关于java - java中的滚动垃圾收集器日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3822097/

相关文章:

java - 2个字符串文件的交集 - java

java - 使用 MVC 进行桌面应用程序开发的推荐书籍

git - 如何在cygwin上获取带有颜色和分页的git日志?

logging - 如何使用 Enterprise Library Logging 仅编写消息以调试输出?

Python:记录一个类的所有方法而不装饰每个方法

language-agnostic - 有没有内置垃圾收集的编译语言?

java - 如何定位/查找每次刷新时 ID 和 xpath 发生变化的元素 - Selenium WebDriver Java

java - 在Java中使用用户名和密码创建数据库

java - 以 spring bean 作为属性的垃圾收集清理对象

javascript - 如何在 Javascript 中收集匿名对象垃圾?