Skip to content

Instantly share code, notes, and snippets.

@alexandrnikitin
Last active October 2, 2018 11:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save alexandrnikitin/c1f409c0db55de83cda7cb48d464a154 to your computer and use it in GitHub Desktop.
Save alexandrnikitin/c1f409c0db55de83cda7cb48d464a154 to your computer and use it in GitHub Desktop.
HOWTO: Create FlameGraphs for java
yum install git perf cmake gcc gcc-c++
# generates method mappings
cd ~
git clone https://github.com/jrudolph/perf-map-agent.git
cd perf-map-agent/
export JAVA_HOME=/opt/jdk1.8.0_91
cmake .
make
# add -XX:+PreserveFramePointer to java exec cmd
cd ~
git clone https://github.com/brendangregg/FlameGraph.git
# for jvm PID only
export JAVA_HOME=/opt/jdk1.8.0_91
export FLAMEGRAPH_DIR=~/FlameGraph/
export PERF_RECORD_SECONDS=60
ps ax | grep java
./perf-map-agent/bin/perf-java-flames <PID> -F 99 -a -g
# with kernel stackframes
ps ax | grep java
export JAVA_HOME=/opt/jdk1.8.0_91
./perf-map-agent/bin/create-java-perf-map.sh <PID>
perf record -F 99 -a -g -- sleep 60
perf script > out.perf
./FlameGraph/stackcollapse-perf.pl out.perf > out.folded
./FlameGraph/flamegraph.pl out.folded > out.svg
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment