JVM内存区域的划分


一、什么是JVM内存?
一个Java程序执行javac后生成.class文件,然后JVM的类加载器加载各个类的字节码文件,加载完毕之后交给JVM执行。在整个程序的执行过程中,JVM会用一段空间来存储程序执行期间需要用到的数据和相关信息,这段空间一般被称作运行时数据区,也就是我要说的JVM内存。
二、JVM内存区域分为哪几个部分?
主要分为以下五个部分:程序计数器、JVM栈、本地方法栈、堆、方法区。
三、它们的各自的作用是什么?
1.程序计数器 (也称作PC寄存器):它的作用是指示执行哪条指令的( 通过改变计数器的值来选取下一条需要执行的字节码指令)。
2.JVM栈 每当JVM调用一个方法时,就会在JVM栈中创建一个 栈帧 (可以理解为过程活动记录)用来存储 局部变量列表 ,方法调用完毕之后,栈帧消失。 如果方法中又调用了其他方法,则继续在栈顶创建新的栈帧。
局部变量列表 存储的是方法中的 局部变量 。对于基本数据类型的变量,直接存储变量的值;对于引用类型的变量,存储的是指向对象的引用
3.本地方法栈 和JVM栈类似,区别就是 本地方法栈是为本地方法服务的 ,而 JVM栈是为Java方法服务的。
4.堆 存放的是new出来的对象实例。
5.方法区 存储已经加载的类的信息(包括类的名称、方法信息、字段信息)、静态变量、常量及编译后的代码。在方法区中有一个 非常重要的部分就是 运行时常量池 ,用于 存储常量 的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值