首页 > 其他 > 详细

JVM内存模型

时间:2020-07-06 01:16:20      阅读:58      评论:0      收藏:0      [点我收藏+]

以下内容是阅读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内存模型

原文:https://www.cnblogs.com/swenker/p/13252519.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!