-
Notifications
You must be signed in to change notification settings - Fork 0
JVM
glowwormX edited this page Feb 28, 2018
·
4 revisions
JAVA虚拟机基本结构
-------类加载系统------------------java栈
方法区--java堆--直接内存----------本地方法栈
-------垃圾回收系统----------------PC寄存器
---------------------执行引擎----------------
方法区
局部变量表:函数参数、局部变量
操作数栈:中间操作结果
帧数据区:常量池解析、正常方法返回、异常处理
垃圾回收算法:
引用计数法
标记清楚法
复制算法(新生代,存活对象少,from、to相当于两个区域,一次只使用一个)
标记压缩算法(老年代,存活对象多,复制清楚部分,才能产生连续的内存)
分代算法
分区算法
垃圾收集器:
SerialGC:串行回收期
新生代ParNewGC回收器:工作在新生代,独占式,多线程回收,需要并发能力高的CPU
新生代ParallelGC回收器:与ParNewGC差不多,特点:注重系统吞吐量,可以调吞吐量、停顿时间,另外可以自动调整新生代、eden和survivor比例、晋升老年代年龄、堆大小、吞吐量、停顿时间
老年代ParallelGC回收器:JDK1.6,与新生代ParNewGC回收器使用的系统非常注重吞吐量
**GMS回收器: **
G1回收器:
对象分配过程
尝试栈上分配
尝试TLAB分配(每个线程自己的堆空间、较小、在Eden上)
判断是否满足直接进入老年代
最后在eden分配
晋升策略
TargetSurvivorRatio(survivor区的使用率,默认50):达到该值进入老年区
MaxTenuringThreshold(进入老年代阈值,默认15):达到该值进入老年区