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