前言: 前面已经讨论过jvm内存运行时区域的各个部分,其中程序计数器、虚拟机栈、本地方法栈3个区域随着线程而生随着线程而灭,而java堆和方法区则不一样,一个接口中的多个实现类需要的内存可能不一样,一个方法中的多个分支需要的内存也可能不一样,另外我们只有在程序处于运行期间才知道要创建什么对象以及这些对象分配多少内存。
如何判断对象已死: 通过可达性分析,如果GC Roots到对象是不可达的,表示这个对象已死,也就说该对象将被垃圾回收掉
GCRoots: java语言中GC Roots包括 1.虚拟机栈中引用的对象 2.方法区中类静态属性引用的对象 3.方法区中常量引用的对象 4.本地方法栈中Native方法引用的对象