Posts

Showing posts with the label flame-graphs

Profiling Java Applications with Async Profiler

My first Hackernoon story was published today. The story is " Profiling Java Applications with Async Profiler " With " Async Profiler ", both system code paths and Java code paths can be profiled with the help of AsyncGetCallTrace (an internal HotSpot JVM API) and perf_events . Async profiler supports several types of profiling. For example, CPU profiling Allocation profiling Wall-clock profiling Lock profiling The Hackernoon story demonstrates few examples of using Async Profiler and generating Flame Graphs as the output.

Java Mixed-Mode Flame Graphs

Recently, I wrote a blog post on " Java CPU Flame Graphs ". That blog post shows how to use Linux perf_events to generate Java Mixed-Mode Flame Graphs. With Java Profilers, we can get information about Java process only. However with Java Mixed-Mode Flame Graphs, we can see how much CPU time is spent in Java methods, system libraries and the kernel. Mixed-mode means that the Flame Graph shows profile information from both system code paths and Java code paths. This is sometimes very important to identify performance issues. For more information, see  Java in Flames  and  New JVM Option Enables Generation of Mixed-Mode Flame Graphs In this blog post, I'm using a sample high cpu consuming Java Program  with Java 8 Update 60. $ mvn -version Apache Maven 3.3.3 (7994120775791599e205a5524ec3e0dfe41d4a06; 2015-04-22T17:27:37+05:30) Maven home: /usr/local/apache-maven/apache-maven-3.3.3 Java version: 1.8.0_60, vendor: Oracle Corporation Java home: /usr/lib/jvm/jdk1.8...