P r o i l e s
Figure 13-4. hreads tab
Locked java.util.concurrent lock objects place their
threads into WAITING (yellow in VisualVM). This is
because the implementation provided by java.util.concur
rent is purely user space and does not involve the operating
The Sampler tab, as shown in Figure 13-5 , samples either memory or CPU. In the
memory mode, it samples object creation—either overall, or JVM only, or even on a
This enables the developer to see what the most common objects are—in terms of
bytes and instances (in a manner similar to jmap -histo ).
The objects displayed on the Metaspace submode are typically core Java/JVM con‐
structs. 1 Normally, we need to look deeper into other parts of the system, such as
classloading to see the code responsible for creating these objects.
jvisualvm has a plug-in system, which can be used to extend the functionality of
the framework by downloading and installing extra plug-ins. We recommend
always installing the MBeans plugin (shown in Figure 13-6 ) and the VisualGC plu‐
gin (discussed next, and shown in Figure 13-7 ), and usually the JConsole compati‐
bility plugin, just in case.
1 Before Java 8, a construct called PermGen was used instead of Metaspace.