java虚拟机(JVM)
2020-07-16 12:35:51 30 举报
java 虚拟机(JVM)
作者其他创作
大纲/内容
程序计算器
线程
堆
1. 老年代:新生代=2:12. Eden:Survivor(from):Survivor(to)=8:1:13. 垃圾识别算法:可达性算法4.垃圾回收算法:分代收集算法 (分代收集算法是标记清楚和复制两种算法的合集) ① 老年代 可回收的对象较少 采用标记算法实现;(标记算法缺点容易产生大量碎片) ② 新生代 可回收对象较多 采用复制算法 复制算法原理: · 将 Eden+Survivor(from) 区中的可回收对象进行回收 · 将 存活对象 拷贝到 Survivor(to) 区,给对象年龄+1 · 判断对象年龄是否达到老年代要求,达到则迁移到老年代 · 将 from 和 to 标识对换
本地方法栈
新生代
老年代
栈帧
Survivor(to)
...
类加载器
操作数栈
栈
方法区
局部变量
和虚拟机栈类似,区别是本地方法栈为使用到的Native方法服务
运行时数据区
-局部变量表局部变量表所需的内存空间在编译期间完成分配,当进入一个方法时,这个方法需要在帧中分配多大的局部变量空间是完全确定的,在方法运行期间不会改变局部变量表的大小。-操作数栈保存着Java 虚拟机执行过程中的数据-动态链接符号引用和直接引用在运行时进行解析和链接的过程,叫动态链接。前提是每一个栈帧内部都要包含一个指向运行时常量池的引用,来支持动态链接的实现。-方法出口恢复上层方法的局部变量表和操作数栈把返回值(如果有的话)压入调用者栈帧的操作数栈中调整PC计数器的值以指向方法调用指令后面的一条指令
方法出口
线程私有
线程共享
Survivor(from)
Eden
1.存放运行时常量池2.静态变量3.final类型常量4.类信息
动态链接
0 条评论
下一页