How to debug CPU and memory on java thread

In today's development, we don't write 100% of the code we send to production. And that's a relief. But sometimes, it's hard to see where the performance issues comes from. And let's be honest, we thing it's this other dependencies'fault.

Jstack

Just to be sure it's not your code, you can use :

sudo jstack -l 666 | grep cpu | awk 'match($0, /cpu=[[:digit:].]+/){print substr($0, RSTART+4, RLENGTH-1)+0, $0}' | sort -n -k1,1 | cut -d' ' -f2- (where 666 is the java PID) to see threads sort by cpu usage

jstack is part of java, so already on the server, where the java process you want to analyse is.

Top

And there is also : top -n 1 -H -p 666 (where 666 is the java PID)

jcmd

This tool comes with Java

To display the JVM process :

jcmd

Information about the process

jcmd <pid>

Information about the service

jcmd <pid> <service>



Tags: blog

← Back home