是否可以重定向kill 3 <java_pid>
线程转储输出?
我在服务器上有很多行(>500mb)的巨大system_out.log文件,很难解析和查找转储。
与其试图弄清楚如何重定向,不如使用一个可以随心所欲的工具。其中任何一个:
- jstack
- jcmd(使用
Thread.print
) - astack
请将以下JVM参数附加到您的应用程序中。线程转储应在dump.log中捕获。
-XX: +UnlockDiagnosticVMOptions-XX:+LogVMOutput-XX:LogFile=dump.log
请注意,它不重定向,而是启用JVM诊断日志记录。所以,也有可能是过头了。
正如Matt所建议的,您可以使用jstack(etc)来捕获文件中的线程转储。为此,您可以简单地复制服务器中的JDK目录。但是,如果你想包装&将JDK与您的应用程序一起发货(稍后进行调试)请检查是否有任何许可含义。