Java程序运行期数据区

Java程序运行期数据区

Java虚拟机的内部由类装载器、运行时数据区和执行引擎组成,如图2.7所示。类装载器用来装载我们要执行的Java类,执行引擎负责执行被装载类的方法中的指令。而Java程序运行时,需要在内存中存储许多东西,包括字节码、程序中创建的对象、变量等等。Java虚拟机把这些东西都组织到“运行时数据区”中,以便于管理。

一个正在运行的Java程序在内存中以进程的形式存在,Java虚拟机为该进程分配内存空间。而一个进程可以有一到多个线程,多个线程共享该进程的内存空间。每个线程是一个单独的执行单元。Java程序运行时,某些数据区是由程序中所有线程共享的,还有一些则只能由一个线程所拥有。

每个Java虚拟机都有一个方法区和一个Java堆(Heap),它们是由该Java虚拟机中所有线程共享的。类文件的字节码以及常量池(常量和字面量)放在方法区,而程序运行时所创建的所有对象都放在堆中。

当一个新线程被创建时,该线程就会被分配一个属于它自己的Java栈和PC寄存器。如果线程正在执行的是一个Java方法,那么PC寄存器的值总是指示下一条将被执行的指令。而它的Java栈则总是存储该线程中Java方法调用的状态,包括方法中的局部变量、被调用时传递进来的参数、返回值以及运算中间结果等。

对于基本类型的变量,Java虚拟机将其放在Java栈中。

对于引用类型的变量,引用变量本身放在Java栈中,而引用所指向的对象放在Java堆中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值