jvm相关知识点

时间:2022-01-26 00:30:59

1.hotspot虚拟机结构:类加载器、堆、栈、方法区、垃圾回收系统、执行引擎、本地方法栈、pc寄存器。

类加载器:负责将class文件从文件系统加载到方法区。

堆:存放对象的一块区域,所有线程共用。

栈:每个线程都有自己的一块栈空间,主要用于局部变量、方法参数保存。

垃圾回收系统:用于垃圾回收。

执行引擎:讲将class字节码翻译成机器能执行的机器码。

本地方法栈:跟Java栈类似,本地方法使用。

pc寄存器:存放机器下一步要执行的地址指针。

2.堆主要分为新生代和老年代,新生代又分为eden、s0、s1,新实例化对象都是放在eden区,回收存活后往s0、s1移动。

相关配置参数:

最小堆:Xms,

最大堆:Xmx,

新生代堆大小:Xmn,

栈大小:Xss

eden/s0 = eden/s1  = -XX:NewRatio,

到年代/新生代 = -XX:SurViVorRatio,

方法区大小:-XX:PermSize=64M

最大方法区大小:-XX:MaxPerSize=64M

3.垃圾回收算法:

标记计数法,

标记压缩法:把存活的对象压缩到内存一边。

复制算法:把一块内存分成两块,一块用于垃圾回收,回收完将存活的对象复制到另一块区域,然后清除以前区域的所有对象,这样反复使用。

分区算法:将一块区域分成多块区域。

分代算法:新生代和老年代使用不同的回收算法。

4.垃圾回收器

串行回收器:-XX:+UseSerialGC

并行回收器:两个新生代并行回收器,分别是UseParNewGC和UseParallelGC,一个老年代垃圾回收器是UseParallelOldGC

CMS回收器:

G1回收器: