The JVM monitor can measure the following metrics:
Total memory usage is the amount of memory that the JVM uses. This metric can affect overall performance of the underlying OS, if the JVM consumes all available memory.
Heap memory usage is the amount of memory that the JVM allocates for objects used by the running Java application. Unused objects are regularly removed from the heap by the garbage collector. If this metric grows, it can indicate that your application is not removing references for unused objects, or that you need to configure the garbage collector properly.
Non-Heap memory usage is the amount of memory allocated to the method area and the code cache. The method area is used to store references to loaded classes. If these references are not removed properly, the permanent generation pool can increase every time the application is redeployed, leading to a non-heap memory leak. It can also indicate a thread-creation leak.
Total pool memory usage is all the memory used by the various memory pools allocated by the JVM (that is, the total memory without the code cache area). This can give you an idea of how much memory your application consumes without the JVM overhead.
Threads is the number of active threads in the JVM. For example, each request to a Tomcat server is processed in a separate thread, so this metric can give you an idea of the number of requests that are currently being served.
Classes is the number of loaded classes. If your application dynamically creates a lot of classes, this can be the source of a severe memory leak.
Read Java Virtual Machine: the Essential Guide to learn the basics of JVMs.