JVM运行时内存区域结构

Posted lay2017

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JVM运行时内存区域结构相关的知识,希望对你有一定的参考价值。

技术分享图片

JVM设计者们之所以会选择将JVM内存结构划分为多个不同的内存区,是因为每个独立的内存区都有各自的用途,都会负责存储各自的数据类型。其中一些内存区的生命周期往往和JVM的生命周期保持一致,也就是说,会伴随者JVM的启动而创建,伴随着JVM的退出而销毁。而另一部分内存区则是与线程的生命周期保持一致,会伴随着线程的开始而创建,伴随着线程的消亡而销毁。尽管不同的内存区域存储的类型和生命周期有一定区别,却都拥有一个相同的本质,那就是存储程序的运行时数据。

 

JVM中的内存区可以根据受访问权限的不同定义为线程共享和线程私有两大类。

所谓线程共享指的是可以允许被所有的线程共享访问一类内存区,包括:

1、堆区;

2、方法去(永久代);

3、运行时常量池;

和线程共享内存区不同,线程私有内存区是不允许被所有线程共享访问的。线程私有的内存区是只允许被所属的独立线程进行访问的一类内存区,包括:

1、PC寄存器(程序计数器);

2、Java栈;

3、本地方法区;

以上是关于JVM运行时内存区域结构的主要内容,如果未能解决你的问题,请参考以下文章

Jvm内存区域与对象结构概览

Jvm内存区域与对象结构概览

深入理解java:1.3.1 JVM内存区域的划分(运行时数据区)

JVM内存区域的划分(内存结构或者内存模型)

JVM内存区域的划分(内存结构或者内存模型)

JVM内存结构 VS Java内存模型 VS Java对象模型