JVM内存模型
2022-04-25 23:51:17 0 举报
jvm内存模型
作者其他创作
大纲/内容
类装载子系统
局部变量表
STW机制
对象
gcRoot跟节点引用的不能被回收
STW机制会停止用户线程,比如电商系统用户买东西就是开启线程就是用户线程。如果没有STW机制,那么GC没有结束,程序继续执行,执行结束栈里面的引用都被释放掉了,也成了垃圾对象被回收了
Eden(8/10)
比如:Object obj=new Object()局部变量表里面就存放的是对象在堆中的内存地址
死循环放对象可能会内存溢出,递归,因为一直被gcroot引用着,因为这个时候堆里面的对象在栈中还一直被引用着
本地方法栈
堆空间
字节码文件
方法出口
对象的字节码文件
程序计数器
老年代(2/3)
FILO(栈)
如何涉及到计算加减乘除,其实cpu会拉去信息然后计算
JVM三个组成部分:类装载子系统,内存区,字节码执行引擎
方法区(元空间)常量,静态变量,类的信息
栈桢
s0(1/10)
年轻代(1/3)
javap-c反编译字节码文件,会有instroe,costrt等指令,其中每一个代码前面都有这个0,1,2编号,这个就是程序计数器的作用。总的老说其实就是记录着程序在内存中执行到哪一个命令行
放的就是一些本地方法,被native修饰的方法,就是c++实现的方法,比如CAS调用unsafe
下一步要执行的信息
s1(1/10)
方法区:如果用javap -v编译的话,其实会出现这个pool,就是常量池
操作数栈
thisintstring
jvm内存区域
开启的线程
执行
分代年龄到15以后就进入老年代,老年代满了就出发fullGc,回收堆,栈,方法区,不会立刻OOM,静态变量,对象池,spring托管的都有可能进入老年代
放的是局部变量表中对应的数字
堆
fullGc
main方法(栈桢)
minorGc
字节码执行引擎
栈(线程)
修改
动态链接
0 条评论
下一页