前言 线程独享的内存区域有程序计数器,虚拟机栈,本地方法栈,这些区域不用考虑内存回收的问题,随着线程的执行结束,自然就回收了,而堆内存和方法区的回收则不一样,他们的内存分配和回收是动态的. 1.对象存活与否 法一:引用计数算法 原理:每当有地方引用该对象时,计数器加一,当引用实效的时候,计数器减一,当计数器值为0的时候可以进行对象的内存回收. 问题:无法解决对象之间的循环引用 法二:可达性分析 原理 :1.选择一系列的对象作为GC Roots(GC ROOTS:栈帧中的局部变量表中的对象引用,方