详细的 Java GC 日志
当使用以下参数时,sun JVM 会将详细的 GC 日志输出到 StdOut。
-verbose:gc
-XX:+PrintGCTimeStamps
-XX:+PrintGCDetails
但是,我不想要 StdOut 中的输出,并且我并不真正需要每个 GC 的详细信息。是否可以通过编程方式访问用于这些日志的数据?我希望能够将分配/收集的内存量以及理想情况下随时间变化的平均对象大小记录到我自己的日志文件中。
The sun JVM outputs detailed GC logs to StdOut when the following args are used.
-verbose:gc
-XX:+PrintGCTimeStamps
-XX:+PrintGCDetails
However, I don't want the output in StdOut and I dont really need the detail for every single GC. Is it possible to access the data used for these logs programatically? I would like to be able to log to my own log file the amount of memory allocated/collected and ideally the average object size over time.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您需要添加
此文件在每次 JVM 启动时都会重新初始化,因此如果您想保留它以供分析,请不要忘记将其移动到安全位置。
Java 可以理解的许多命令行选项的完整列表可以在 此处适用于 Java 6。
You need to add
This file gets reinitialized every time the JVM starts, so dont forget to move it to safe location if you want to keep it for analysis.
A complete list of the many command line options Java understands can be found here for Java 6.
您可以改用内存池和 GC 的 JMX Bean。他们的优点是您可以获得可以免费查询的柜台。缺点是,它们因不同的 VM 供应商、版本和 GC 设置而异。
例如
You can use the JMX Beans for Memory Pools and GC instead. They have the advantage that you get counters wich you can query on a free schedule. The disadvantage is, that they differ for various VM vendors, versions and GC settings.
For example