JVM相关知识简单总结

JVM内存区域

1,程序计数器:当前线程执行的字节码的行号指示器,线程私有,唯一一个虚拟机规范中没有规定任何OOM的区域

2,虚拟机栈:用于存储局部变量,操作数栈,动态链接,方法出口信息等

3,本地方法栈:执行Native方法服务使用的的内存

4,堆:1个Eden区+2个survivor区+老年代,垃圾回收器管理的主要区域

5,方法区:存储类信息,常量,静态变量,也叫永久代

JVM常见参数

-Xms 初始堆大小

-Xmx 最大堆大小

-Xmn 新生代大小(一般为整个堆的1/3或1/4),其中包含1个Eden和2个Survivor

-XX:PermSize 初始永久代大小,永久代也就是方法区,多线程共享内存

-XX:MaxPermSize 永久代最大值

老年代大小 = 堆 - 新生代

JVM内存 = 堆 + 永久代

对象在JVM中如何分配

1,寻找空闲的堆空间,一种是指针碰撞,一种是空闲列表

在堆空间上分配该对象所需的空间,一种是CAS分配,一种是TLAB分配

2,初始化成员变量

3,引用指向对象

对象的访问定位

通过句柄访问对象

通过直接指针访问对象

猜你喜欢

转载自blog.csdn.net/qq_24760259/article/details/106785456
今日推荐