图说JVM内存模型

1 篇文章 0 订阅

JVM内存模型图

  • 根据JVM规范,JVM内存共分为五个部分。方法区、堆、虚拟机栈、本地方法栈、程序计数器。
    在这里插入图片描述

JVM的内存结构大概分为

  • 方法区(Method Area):线程共享。存储类信息、常量、静态变量、即时编译器编译后的代码。

  • 堆(Heap):线程共享。所有的对象实例以及数组都要在堆上分配。回收器主要管理的对象。

  • 虚拟机栈(VM Stack):线程私有。存储局部变量表、操作栈、动态连接、方法出口、对象指针。
    在这里插入图片描述

  • 本地方法栈(Native Method Stack):线程私有。为虚拟机使用到 Native 方法服务。如 Java 使用 c 或者 c++ 编写的接口服务时,代码在此区运行。

  • 程序计数器(Program Counter Register):线程私有。有些文章也翻译成 PC 寄存器(PC Register),同一个东西。它可以看作是当前线程所执行的字节码的行号指示器。指向下一条要执行的指令。

方法中的变量何时开始分配空间

方法中的变量是属于局部变量,局部变量是存在虚拟机栈中,当方法被调用时,局部变量才开始分配空间,方法执行结束内存释放。

  • 静态变量在 jdk1.7(包含 jdk1.7)之前存在方法区,jdk1.8 开始存在堆中。
  • 成员变量存在堆中,在对象创建的时候分配空间。

JDK1.8 内存模型图

在这里插入图片描述

END…
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值