JVM学习
2020-03-07 11:52:12 25 举报
JVM学习
作者其他创作
大纲/内容
元空间(永久代。JDK1.8之后就变成本地内存了)
线程1
操作数栈
堆
局部变量表基本数据类型会直接存值,引用数据类型会存放对象的引用
操作数栈方法入栈时数据会先加载到这里,然后根据需要加载到局部变量表里
Java栈
From(s0)
javac 编译
5
3
Eden(对象出生的地方)
栈帧(main)
动态链接
程序计数器(若当前线程运行到一半被抢走数据会暂存在这里)
局部变量表
源代码
栈帧(sum)
垃圾收集器系统会在空闲的时候执行gc操作也可以手动使用System.gc();来通知虚拟机执行GC。但这个并不会马上被虚拟机执行,虚拟机会在其空闲的时候执行GC操作(为什么新生代对象进入老年代需要经历15次GC,因为对象头里面用了四位记录GC状态1111 = 15)
HelloWorld.class
方法出口
装载子系统
To(s1)
新生代(新生代GC时采用的算法是复制算法,当有一个新对象产生时会存在于Eden,s0与s1两个区总会有一个区是空白的,当经历垃圾回收时,会将尚且存活的对象复制到空白的那个区,然后清除另外一个区)
运行时数据区
8
动态链接(多态,编译期没有指明运行时才指明对象)
本地方法栈(C++实现,虚拟机与底层的交互,像源码里面被 native 修饰的方法)
0 条评论
下一页