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回收器: