首页 > 编程知识 正文

深入理解jvm虚拟机第3版,jvm内存区域线程共享

时间:2023-05-05 06:11:04 阅读:24899 作者:4504

jvm内存模型

1 .程序计数器:每个线程都有独立的程序计数器,每个线程之间的计数器互不影响,因此该区域是线程的私有区域。 此内存区域是Java虚拟机规范中唯一没有指定内存溢出(OOM )的区域。

2 .虚拟机堆栈:与程序计数器一样,虚拟机堆栈也是专用于线程的。 他的生命周期与线程相同,是在jvm运行时创建的。 方法在运行时创建一个包含局部变量表、操作堆栈、方法出口等信息的堆栈框架.是方法调用含义不断的堆栈、弹性堆栈。

3 .本地方法堆栈:使线程专用,并对线程调用本地方法(jni方法,由c/c创建) ) ) ) ) ) ) )。

4 .堆内存:线程共享是jvm中最大的内存空间,java运行时创建的大多数对象都存储在堆内存中。 该区域是垃圾收集器的重点观察对象,也称为gc堆。

5 .方法空间:线程共享,也称为永久层代,主要用于存储加载到虚拟机中的类信息、常量、静态变量等.

关于虚拟机堆栈和线程,让我们来看看虚拟机堆栈大小和线程数之间的关系。

从jvm内存结构来看,可以理解为jvm内存大小=堆内存大小虚拟机堆栈内存大小*线程数。

从数学的角度来看:

jvm的内存大小不变。

堆内存大小一定时:

虚拟机内存越大,线程数就越少。

堆栈内存越小,线程数越多。

如果虚拟机堆栈的内存大小恒定:

堆内存越大,线程数就越少

堆内存越小,线程数就越多。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。