
1、方法区
用于存储虚拟机加载的 类信息,常量,静态变量等数据。
2、堆
存放对象实例,所有的对象和数组都要在堆上分配,是 JVM 所管理的内存最大的一块区域。
3、栈
Java 方法执行的内存模型:存储局部变量表、操作数栈、动态链接、方法出口灯信息。
生命周期与线程相同。
小于 1 分钟

用于存储虚拟机加载的 类信息,常量,静态变量等数据。
存放对象实例,所有的对象和数组都要在堆上分配,是 JVM 所管理的内存最大的一块区域。
Java 方法执行的内存模型:存储局部变量表、操作数栈、动态链接、方法出口灯信息。
生命周期与线程相同。


标记无用对象,然后进行清除回收。
缺点:效率不高,无法清除垃圾碎片。

按照容量划分二个大小相等的内存区域,每次使用其中的一块。当这一块的内存使用完后,就将还存活的对象复制到另一块去,然后再把使用的空间一次清理掉。这样就使每次的内存回收都是对内存区间的一半进行回收。
缺点:内存使用率不高,只有原来的一半