JVM thread dump location

后端 未结 4 1243
后悔当初
后悔当初 2021-01-01 19:56

When I issue a kill -3 command to my Java program, it generates the thread dump on the console. How do I redirect this to a file?

相关标签:
4条回答
  • 2021-01-01 20:23

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

    0 讨论(0)
  • 2021-01-01 20:30

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

    0 讨论(0)
  • 2021-01-01 20:31

    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
    
    0 讨论(0)
  • 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.

    0 讨论(0)
提交回复
热议问题