JVM总结

一:JVM运行时数据区:程序计数器、虚拟机栈、本地方法栈、堆、方法区(元空间)

1:虚拟机栈:存储当前线程运行方法所需的数据、指令、返回地址。

栈帧(用来执行方法):每个方法在执行的同时都会创建一个栈帧,栈帧划分为:局部变量表(八大基本数据类型、对象引用reference)、操作数栈、动态链接、返回地址。

2:本地方法栈:本地方法栈保存的是native方法的信息,当一个JVM创建的线程调用native方法后,JVM不在为其在虚拟机栈中创建栈帧,JVM只是简单地动态链接并直接调用native方法。但是Hotspot虚拟机把虚拟机栈和本地方法栈合二为一。

二:堆内存分为新生代和老年代,新生代分为:Eden区域、survivor区域(from、to),也就是说新生代区域分为三部门,内存大小比例为8:1:1

三:对象存放过程总结:

①:对象优先放在Eden区域

②:长期存活的对象放在老年代,age=15(发生一次gc,age加一),Eden->from/to->old

③:大对象直接进入老年代

④:动态年龄判断

⑤:空间分配担保,保守做法,对象要晋级老年代了,一般不发生老年代gc,但是如果放不下了,会发生gc

四:JVM中的垃圾回收机制

1:Minor GC: 

回收区域:新生代

回收算法:复制回收算法

2:Full GC:

回收区域:新生代、老年代、永久代(元空间)

回收算法:标记清除、标记整理算法

五:JVM中存在的引用类型

1:强引用

2:软引用

3:弱引用

4:虚引用

posted @ 2019-12-11 22:48  郭慕荣  阅读(218)  评论(0编辑  收藏  举报