Java虚拟机(三)--运行时数据区

本文详细介绍了Java虚拟机(JVM)的运行时数据区域组成,包括方法区、堆、程序计数器和线程栈等关键组成部分。阐述了类加载过程及对象创建时的数据存储方式,并对比了不同数据区域的特点。

Java虚拟机运行时数据区的构成

下面是虚拟机runtime data areas:

由方法区(method area), heap, pc register 和stack, 以及本地方法区(native method area)构成。

每个虚拟机实例有一个方法区和一个堆(heap),在一个虚拟机中运行的所有线程共享这两个区。

当虚拟机load一个class文件时,.将class的相关信息放入方法区

随着程序的运行,虚拟机逐步将所有的实例放入heap

可见,为了实现实例间的互相调用,方法区和heap必须是可共享的。


当一个线程诞生时,它有自己的pc register (program counter)Java stack

在一个java方法(not native method)运行时,pc register总是存放着下一条要执行的语句。也就是,该线程下一步要调用的语句。

stack 存放着一个java方法(not native method)调用的状态。比如本地变量,该方法的输入参数,中间计算结果,返回结果等等。


下面是关于heap和stack的概括,便于记忆:

Reference types are in heap.

Any primitive type data and references to values on heap (parameters / local variables of method) are on the stack.

Each thread has its own stack.

All threads in the application share same heap.


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值