详细的 Java GC 日志

发布于 2024-12-02 15:18:11 字数 249 浏览 0 评论 0原文

当使用以下参数时,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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

倦话 2024-12-09 15:18:11

您需要添加

-Xloggc:log_file_name

此文件在每次 JVM 启动时都会重新初始化,因此如果您想保留它以供分析,请不要忘记将其移动到安全位置。

Java 可以理解的许多命令行选项的完整列表可以在 此处适用于 Java 6。

You need to add

-Xloggc:log_file_name

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.

拥有 2024-12-09 15:18:11

您可以改用内存池和 GC 的 JMX Bean。他们的优点是您可以获得可以免费查询的柜台。缺点是,它们因不同的 VM 供应商、版本和 GC 设置而异。

例如

java.lang:type=GarbageCollector,name=Copy
  CollectionCount, ColletionTime, LastGCInfo[1].duration,memoryUSageBefore/After
java.lang:type=GarbageCollector,name=MarkSweepCompact
  CollectionCount, CollectionTime, LastGCInfo[1].duration,memoryUSageBefore/After
java.lang:type=Memory
  HeapMemoryUsage[1].commited,init,max,used

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

java.lang:type=GarbageCollector,name=Copy
  CollectionCount, ColletionTime, LastGCInfo[1].duration,memoryUSageBefore/After
java.lang:type=GarbageCollector,name=MarkSweepCompact
  CollectionCount, CollectionTime, LastGCInfo[1].duration,memoryUSageBefore/After
java.lang:type=Memory
  HeapMemoryUsage[1].commited,init,max,used
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文