JAVA虚拟机内存结构

JAVA虚拟机管理的内存区域分为六个部分:程序计数器、java虚拟机栈、本地方法栈、java堆、方法区、运行时常量池。如图。

java

1、程序计数器

一块较小的线程私有的内存区域,记录程序下次执行的字节码指令的地址,如果执行的是native方法,此区域为空。

2、java虚拟机栈

每个方法执行时创建一个栈帧用于保存局部变量表,动态链接,方法出入口等信息,每个方法从调用到执行完对应一个栈帧在虚拟机栈中的入栈和出栈。会抛出StackOverflow异常(当执行方法深度超过阈值时),如果申请不到更多的栈空间,会抛出OutOfMemoryError异常。

3、本地方法栈

这部分区域用途与java虚拟机栈一样,区别是本地方法栈运行的是native方法

4、java堆

堆是java虚拟机管理的最大的一部分内存区域,垃圾回收也是发生在这块内存;对象都在堆中创建。

5、方法区

线程公有的内存区域,其中保存了虚拟机加载的类信息、常量、静态变量等,又称非堆、永久代(虽称永久代,但其不是java堆的一部分);这部分区域也会发生GC,但是其回收条件非常苛刻。

6、运行时常量池

方法区的一部分,其中存放了虚拟机在编译期产生的各种字面量和符号引用,或者是方法运行期间产生的常量;比如:方法内部产生的String对象值。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值