Java application CPU sampler w/ web-based UI
Switch branches/tags
Nothing to show
Clone or download


WarmRoast is an easy-to-use CPU sampling tool for JVM applications, but particularly suited for Minecraft servers/clients.

  • Adjustable sampling frequency.
  • Supports loading MCP mappings for deobfuscating class and method names.
  • Web-based — perform the profiling on a remote server and view the results in your browser.
  • Collapse and expand nodes to see details.
  • Easily view CPU usage per method at a glance.
  • Hover to highlight all child methods as a group.
  • See the percentage of CPU time for each method relative to its parent methods.
  • Maintains style and function with use of "File -> Save As" (in tested browsers).

Download Latest Version:

Java 7 and above is required to use WarmRoast.


Sample output


  1. Note the path of your JDK.

  2. Download WarmRoast.

  3. Replace PATH_TO_JDK in the following commands with the path to your JDK and execute the program.

Note: The example command line below includes --thread "Server thread", which filters all threads but the main server thread. You can remove it to show all threads.

Modded/vanilla servers: If you are using a modded server, get a copy of MCP for your server's Minecraft version, copy the files from conf/ somewhere, and point WarmRoast to it with --mappings path/to/folder. This helps readability a lot. Bukkit uses its own mapping, so a pure non-modded Bukkit server can't use MCP mappings.


java -Djava.library.path=PATH_TO_JDK/jre/bin -cp PATH_TO_JDK/lib/tools.jar:warmroast-1.0.0-SNAPSHOT.jar com.sk89q.warmroast.WarmRoast --thread "Server thread"


An example PATH_TO_JDK would be C:\Program Files\Java\jdk1.7.0_45

java -Djava.library.path=PATH_TO_JDK/jre/bin -cp PATH_TO_JDK/lib/tools.jar;warmroast-1.0.0-SNAPSHOT.jar com.sk89q.warmroast.WarmRoast --thread "Server thread"
  • The folder PATH_TO_JDK/jre/bin should contain "attach.dll"
  • The folder PATH_TO_JDK/lib should contain "tools.jar"


Usage: warmroast [options]
       The address to bind the HTTP server to
    -h, --help
       Default: false
       The sample rate, in milliseconds
       Default: 100
    -m, --mappings
       A directory with joined.srg and methods.csv
       The name of the VM to attach to
       The PID of the VM to attach to
    -p, --port
       The port to bind the HTTP server to
       Default: 23000
    -t, --thread
       Optionally specify a thread to log only
       The number of seconds before ceasing sampling (optional)

Hint: --thread "Server thread" is useful for Minecraft servers.


The project is licensed under the GNU General Public License, version 3.