跳至主要內容
JVM内存结构

1、方法区

用于存储虚拟机加载的 类信息,常量,静态变量等数据。

2、堆

存放对象实例,所有的对象和数组都要在堆上分配,是 JVM 所管理的内存最大的一块区域。

3、栈

Java 方法执行的内存模型:存储局部变量表、操作数栈、动态链接、方法出口灯信息。

生命周期与线程相同。


zheng小于 1 分钟面试JVM
JVM类加载过程

0、图解

image-20200927113941669
image-20200927113941669
image-20210807123832574
image-20210807123832574

zheng大约 4 分钟面试JVM
JVM垃圾回收算法

1、标记 - 清除 算法

标记无用对象,然后进行清除回收。

缺点:效率不高,无法清除垃圾碎片。
image-20200918092639589
image-20200918092639589

2、复制 - 清除 算法

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

缺点:内存使用率不高,只有原来的一半

zheng大约 1 分钟面试JVM