文档章节

jvm运行时数据区域

大羌
 大羌
发布于 2017/08/10 22:29
字数 638
阅读 9
收藏 0

1、程序计数器

     它可以看作当前线程所执行的字节码的行号指示令;在单核多线程的环境下,线程之间会

进行上下文切换,交替使用cpu, 在交替的过程中,程序计数器会记录该线程执行到哪儿了, 然后继续执行。

2、Java虚拟机栈

      Java虚拟机栈描述的是Java方法执行的内存模型;每个方法在执行的同时会生成一个栈

帧,用于存储局部变量,操作数栈,动态链接,方法的出口信息,每个方法调用到完成的过程,都对应一个

栈帧在虚拟机栈中从入栈到出栈;

      局部变量表:存放编译器可知的各种基本数据类型,对象引用;

     如果线程请求的栈深度大于虚拟机所允许的深度,将抛出StackOverFlowError 异常;类似于数组IndexOutOfBounds异常;

     如果虚拟机栈可以额动态扩展, 如果扩展的时候无法申请到足够的内存,就会抛出OutOfMemoryError异常;

3、本地方法栈

    与Java虚拟机栈所发挥的作用非常相似,本地方法栈则是虚拟机使用到的native方法;

4、Java堆

     Java堆是所有线程共享的一块内存区域,在虚拟机启动时候创建,所有的对象实例和数组都要在堆上分配;

     堆还可以细分为:新生代,老年代,永久代perm;再细致点新生代分为:Eden空间,From Survivor空间,To Survivor空间;基本上的分配比例为8:1:1,垃圾回收(标记-复制的时候)需要用到。

5、方法区

     各个线程共享的内存区域,用于存放已被虚拟机加载的类信息,常量,静态变量,即时编译器编译后的

代码的等数据;功能类似于堆,但是 non-heap

6、运行时常量池

   Runtime Constant pool 是方法区的一部分,class 文件中除了有类的版本,字段,方法,接口等描述信息

外,还有一项信息是常量池,用于存放编译器期生成的各种字面常量和符号引用,这部分内容将在类加载后

进入方法区的的运行时常量池中存放,ps:各种字面量类似于反编译的时候回看见各种数字,这些数字会单独

的存放到常量池里面;

7、直接内存、

 

© 著作权归作者所有

共有 人打赏支持
大羌
粉丝 0
博文 30
码字总数 13657
作品 0
成都
程序员
Java虚拟机运行时数据区结构

本文部分参考自《Java虚拟机规范(Java SE 7版)》的中译本和周志明的《深入理解Java虚拟机》,另加个人理解。原书对Java虚拟机运行时数据区描述只有6页,同时参考其他网络网资料,个人能力所...

foodon
2014/12/09
0
4
JVM内存结构 VS Java内存模型 VS Java对象模型

Java作为一种面向对象的,跨平台语言,其对象、内存等一直是比较难的知识点。而且很多概念的名称看起来又那么相似,很多人会傻傻分不清楚。比如本文我们要讨论的JVM内存结构、Java内存模型和...

Java架构
07/11
0
0
JVM学习总结(一)运行时数据区

《深入Java虚拟机》这本书买了有一段时间了,当时看的时候就只是看,并没有边看边总结啥的,最后发现到脑子里面的根本所剩无几了。现在开始要好好归纳总结地再学习一遍。 运行时数据区域 JV...

hensemlee
04/22
0
0
Java虚拟机内存管理(一)—内存划分

Java 与 C++ 之间有一堵由内存动态分配和垃圾收集技术所围成的 “高墙”,墙外面的人想进去,墙里面的人却想出来。——《深入理解Java虚拟机:JVM高级特性与最佳时实践(第二版)》周志明 Ja...

Wizey
08/30
0
0
Java虚拟机JVM内部体系结构

Java虚拟机JVM内部体系结构 易百教程移动端:请扫描本页面底部(右侧)二维码并关注微信公众号,回复:"教程" 选择相关教程阅读或直接访问:http://m.yiibai.com 。 JVM(Java虚拟机)是一个抽象...

LYQ1990
07/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

原型模式

1、原型模式-定义 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象 克隆(浅度克隆->拷贝值类型或者引用,深度克隆->创建新的对象,开辟新的内存) 例如客户端知道抽象Pro...

阿元
48分钟前
5
0
awk命令扩展使用操作

awk 中使用外部shell变量 示例1 [root@centos01 t1022]# A=888[root@centos01 t1022]# echo "" | awk -v GET_A=$A '{print GET_A}'888[root@centos01 t1022]# echo "aaaaaaaaaaaaa" | aw......

野雪球
今天
10
0
深入解析MySQL视图VIEW

Q:什么是视图?视图是干什么用的? A:视图(view)是一种虚拟存在的表,是一个逻辑表,本身并不包含数据。作为一个select语句保存在数据字典中的。   通过视图,可以展现基表的部分数据;...

IT--小哥
今天
13
0
虚拟机学习之二:垃圾收集器和内存分配策略

1.对象是否可回收 1.1引用计数算法 引用计数算法:给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1;任何时候计数器值为0的对象就是不可能...

贾峰uk
今天
10
0
smart-doc功能使用介绍

smart-doc从8月份底开始开源发布到目前为止已经迭代了几个版本。在这里非常感谢那些敢于用smart-doc去做尝试并积极提出建议的社区用户。因此决定在本博客中重要说明下smart-doc的功能,包括使...

上官胡闹
昨天
19
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部