A pure-java implementation of the twitter/util project's CpuProfile
and related
classes.
Original Scala sources:
The CpuProfile.record
method will record samples of stacktrace elements and return a CpuProfile
object. That object
can then be written into a pprof
-parseable format using
CpuProfile.writeGoogleProfile
.
There is a provided JAX-RS resource that makes this simple to use with an http service. For example, with a Dropwizard application:
environment.jersey().register(CpuProfileResource.class);
Which exposes the URLs /pprof/contention
that detects blocked threads, and /pprof/profile
that detects runnable
threads. Here is an example of using curl
to retrieve a profile and turn it into a PDF:
curl http://localhost:8181/pprof/contention > prof
pprof --pdf prof > profile.pdf