JVM Run-Time Data Areas(Java虚拟机运行时数据区)

下面的示意图显示了在Java虚拟机中内存的分配和使用情况:


1. 每个线程的数据区(非共享)

      每个线程的数据区包括程序计数器寄存器(Program Counter Register),Java虚拟机栈(JVM Stack),原生方法栈(Native Method Stack)。

当一个线程启动时就会生成这三部分数据区。

程序计数器寄存器(Program Counter Register):这个不多说,学过汇编就知道,PC计数器嘛,控制程序的执行步骤

Java虚拟机栈(JVM Stack):包含了下面会提到的框架(frames)

原生方法栈(Native Method Stack):用于支持原生方法,比如非Java语言的方法

2. 所有线程共享的数据区

      所有线程都共享上图中所示的Heap和Method Area两部分数据区

Heap:该数据区在JVM启动后就创建,存放数组和对象,GC在该数据区工作

Method Area:该数据区存储运行时的常量池,域和方法的数据,方法以及构造器的代码

Runtime Constant Pool:它是在一个类文件中的常量池表的每个类或每个接口的运行时表示,包含了在编译时已知的数字以及在运行时必须解析的域引用等几种常量值


栈Stack包含框架Frame,当一个方法被调用的时候框架就会被推送到栈Stack中,而框架中则包含了临时变量数组,操作数栈和常量值池的引用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值