gpt4 book ai didi

Java(热点)详细 :gc output use in application and process on runtime

转载 作者:行者123 更新时间:2023-11-29 08:56:53 24 4
gpt4 key购买 nike

有什么方法可以 Hook 当前运行的 JVM 进程的标准输出或将 JVM 进程的标准输出重定向到非文件位置?

我的应用程序需要 JVM 的 verbose:gc 输出,目前我可以在控制台中看到此输出但无法将其存储在数据库中或以任何方式处理它,它对运行的 Java 应用程序不可见。

系统错误系统输出

两者都是 native 的包装器,内部 JVM 输出不会在此处传递。两者都看不到此输出(如果重定向或设置为 null,gc 输出将显示在控制台中)。

由于性能原因和文件系统锁定,将 verbose:gc 写入文件然后读取文件无效选项,检查热点源未提供任何方式通过 JVM 启动标志将输出重定向到非文件位置。

我也无法获得运行 JVM 的 Process 对象,没有为此的方法,我也无法找到公开 Process 对象的 native ,所以仍然没有有效的方法来读取此数据。

关于如何在运行时读取 verbose:gc 的任何线索?

最佳答案

Writing verbose:gc to file and then reading file not valid option due performance reasons and filesystem locks,

与实际 GC 的成本相比,这样做的成本微不足道。除非你有一个不应该正常 GC 的系统,否则我不会担心它。如果您担心由于 Windows 锁定而无法读取文件,则可能是您遇到了问题(或者您可以使用 Linux 之类的操作系统,它不会执行此操作)

你应该注意到,GC 输出到一个文件是缓冲的,所以它不是实时的(但对于大多数用例来说足够接近)

以编程方式读取输出非常困难,尤其是因为它是由多线程 GC 编写的,即您会得到奇怪的信息重新排序。

我会考虑获取 jstat 的输出,它旨在由程序读取,但没有获得那么多的细节。

关于Java(热点)详细 :gc output use in application and process on runtime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19907081/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com