开发者

JVM thread dump location

When I issue a kill -3 <pid> command to my Java program, it generates the thread dump on the console. How do I redirect this 开发者_C百科to a file?


Two options:

Run your Java application with stdout redirected

java com.example.MyApp > out.txt

Use jstack instead.

The jstack utility allows you to get a thread dump and send the output to the current console instead of the stdout of the Java application, allowing you to redirect it.

For example, if the PID of your Java application is 12345 (use the jps utility to find it quickly):

jstack 12345 > threads.txt


I usually use the NetBeans profiler, but jvisualvm is available from the command line.


If you want details of all threads and other JVM details, try jconsole.


Please append following JVM arguments to your application. Thread dump should be captured at dump.log.

-XX:+UnlockDiagnosticVMOptions -XX:+LogVMOutput -XX:LogFile=dump.log

Please note it does not redirect, but enables JVM diagnostic logging. So, there could be possible over head as well.

However, if you can have JDK in the environment, using jstack or jcmd (jcmd is preferred with JDK 1.8), you can capture thread dump and redirect to a file.


you can generate java thread dumps using 4 ways excluding the kill -QUIT way.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜