Garbage Collection Roots
A garbage collection root is an object that is accessible from outside the heap.
The following reasons make an object a GC root:
Class loaded by bootstrap/system class loader. For example, everything from the rt.jar like java.util.* .
Local variable in native code, such as user defined JNI code or JVM internal code.
Global variable in native code, such as user defined JNI code or JVM internal code.
Object referred to from a currently active thread block.
A started, but not stopped, thread.
Everything that has called wait() or notify() or that is synchronized.
For example, by calling synchronized(Object) or by entering a synchronized method.
Static method means class, non-static method means object.
Local variable. For example, input parameters or locally created objects of methods that are still in the stack of a thread.
In or out parameters in native code, such as user defined JNI code or JVM internal code. This is often the case as many methods have native parts and the objects handled as method parameters become GC roots. For example, parameters used for file/network I/O methods or reflection.
An object which is in a queue awaiting its finalizer to be run.
An object which has a finalize method, but has not been finalized and is not yet on the finalizer queue.
An object which is unreachable from any other root, but has been marked as a root by MAT to retain objects which otherwise would not be included in the analysis.
Java Stack Frame
A Java stack frame, holding local variables. Only generated when the dump is parsed with the preference set to treat Java stack frames as objects.
An object of unknown root type. Some dumps, such as IBM Portable Heap Dump files, do not have root information.
For these dumps the MAT parser marks objects which are have no inbound references or are unreachable from any other root as roots of this type.
This ensures that MAT retains all the objects in the dump.
netty ChannelFuture 实例
获取jvm heap dump 的几种方式