文档章节

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
码字总数 13488
作品 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虚拟机JVM内部体系结构

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

LYQ1990
07/18
0
0
深入理解Java虚拟机:JVM高级特性与最佳实践(一):java 内存区域与内存异常

如需转载,请标明转自何处 运行时数据区域: java 虚拟机在执行java程序的过程中会把他管理的内存化为若干个不同的数据区域。这些区域都有各自的用途,销毁与创建的时间,有的区域随着进程的...

熊大熊二
2015/11/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

C++ gflags

gflags是google一个开源的处理命令行参数的库,相比getopt,更加容易使用。 定义参数 gflags主要支持的参数类型包括 DEFINEbool: boolean DEFINEint32: 32-bit integer DEFINEint64: 64-bit ...

SibylY
25分钟前
0
0
intellij IDEA Properties中文unicode转码问题

在IDEA中创建了properties文件,发现默认中文不会自动进行unicode转码。如下 在project settings - File Encoding,在标红的选项上打上勾,确定即可 效果图如下: unicode转码后效果...

muzi1994
25分钟前
0
0
Java IO类库之PipedWriter

一、PipedWriter介绍 PipedWriter是字符管道输出流,继承自Writer,功能与PipedOutputStream类似,通过与PipedReader组合使用实现类似管道的功能,在多线程环境下,一个线程使用PipedWriter...

老韭菜
29分钟前
0
0
精简分页组件(手写)

需要引入CSS(没错就是这4行) .pagelist { text-align: center; color: #666; width: 100%; clear: both; margin: 20px 0; padding-top: 20px }.pagelist a { color: #666; margin: 0 2px;......

AK灬
30分钟前
3
0
29 岁成为阿里巴巴 P8,工作前 5 年完成晋升 3 连跳,他如何做到?

泡泡是我的好朋友。今年 31 岁,毕业后就进了阿里巴巴,工作五年内从 P4 晋升至 P6、P7、P8。 和他很少聊到工作,但总觉得他有很棒的职场心得,应该分享出来,于是有了这次采访。希望对职场新...

Java填坑之路
32分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部