Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java(热点)详细:运行时在应用程序和进程中使用gc输出_Java_Logging_Garbage Collection_Jvm_Verbose - Fatal编程技术网

Java(热点)详细:运行时在应用程序和进程中使用gc输出

Java(热点)详细:运行时在应用程序和进程中使用gc输出,java,logging,garbage-collection,jvm,verbose,Java,Logging,Garbage Collection,Jvm,Verbose,有什么方法可以钩住当前正在运行的JVM进程的stdout,或者将JVM进程的stdout重定向到非文件位置 我需要我的应用程序的JVM的verbose:gc输出,目前我可以在控制台中看到这个输出,但无法将它存储在数据库中或以任何方式处理它,它对运行java应用程序是不可见的 System.err 系统输出 两者都是本地人的包装器,内部JVM输出不会传递到这里。 两者都看不到此输出(即使重定向或设置为null,gc输出也会显示在控制台中) 由于性能原因和文件系统锁定,将verbose:gc写入文件

有什么方法可以钩住当前正在运行的JVM进程的stdout,或者将JVM进程的stdout重定向到非文件位置

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

System.err 系统输出

两者都是本地人的包装器,内部JVM输出不会传递到这里。 两者都看不到此输出(即使重定向或设置为null,gc输出也会显示在控制台中)


由于性能原因和文件系统锁定,将verbose:gc写入文件,然后读取file not valid选项,检查热点源是否没有通过JVM启动标志将输出重定向到非文件位置

此外,我无法获取运行JVM的进程对象,没有用于此的方法,也无法找到公开进程对象的本机,所以仍然没有读取此数据的有效方法

关于如何在运行时读取verbose:gc有什么线索吗


由于性能原因和文件系统锁定,将verbose:gc写入文件,然后读取文件无效选项

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

您应该注意,文件的GC输出是缓冲的,因此它不是实时的(但对于大多数用例来说足够接近)

以编程方式读取输出是非常困难的,尤其是因为它是由多线程GC编写的,也就是说,您会对信息进行奇怪的重新排序


<>我会考虑得到<代码> jSTAT的输出,它是由程序读取的,虽然没有得到太多的细节。

< P>可以通过JMX获得信息GC暂停信息。它没有GC日志那么满,但可以防止您进行解析。是一个CLI工具,可以跟踪JVM运行进程的GC事件。您可以使用它或使用它的代码来构建定制的解决方案

jstat
是另一个选项,但与JMX相比,它暴露的信息更少,而且在CMS收集器中,它的格式设置会产生误导


有问题的是,使用PerfCounter API是第三种选择(
jstat
在内部使用它)。有关详细信息,请参见
sun.management.counter.perf.perf Instrumentation
类。

是否要查看GC何时运行或您的意图?“由于性能原因和文件系统锁定而无效选项”。。。让我猜猜。。。。您是Windows用户???仅在Windows上测试,但我没有做任何特定于平台的操作,目的是:在客户端上运行的应用程序应该向服务器报告运行时的内存状态,这是“学术”应用程序,没有任何实际目标。