JVM内存模型

Posted swenker

tags:

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

以下内容是阅读JVM8的规范时,临时记录下来。如果朋友们发现有什么问题请不吝指正。谢谢。

在JVM8的规范中,是以Runtime Data Area出现的,主要包含两部分:

1.JVM启动时创建,退出时销毁;

2.线程区域,线程启动时创建,退出时销毁。

具体包括以下组成部分:

1.pc register,即为 program counter,用来记录method 的return address。

2.JVM stacks: 每一个线程创建时,对应的stack也被创建出来,存放本地变量和部分方法调用的返回结果。 stack的内存区域无需连续。注意,如果线程运行时需要的内存大于stack的容许值,则会stackoverflow error。如果jvm stacks的空间允许动态扩展,但是没有更多内存可以用来创建新thread时,会OutofMemoryError

3.Heap : 在jvm threads 间共享的区域。heap中存放 classes instances 和 arrays。JVM启动时,heap被创建。如果需要的内存超过的heap的值,则OutOfMemoryError

4.Mehod Area : Mehod is shared  among all JVM threads. 存放class的constant pool,fields, method和constrctor的代码(类似于代码区或者文本区); JVM启动时创建。逻辑上 method area属于heap的一部分。

5.Runtime Constant pool. 位于 JVM method area。如果需要的空间不够了,则ooe。可以理解成每个class或者interface被jvm创建时,会在method area创建一个pool,类似于a table,内容包括数值常量,引用地址?

6.Native method area: for native thread.

需要加入一张图来解释 JVM heap

 

以上是关于JVM内存模型的主要内容,如果未能解决你的问题,请参考以下文章

JVM内存模型Java内存模型 和 Java对象模型

JVM:JVM内存模型

JVM内存模型详解

细说JVM内存模型

JVM优化系列-------[3丶JVM的内存模型]

两种内存模型——JVM vs 计算机