JVM虚拟机内存结构简析

JVM虚拟机内存结构简析

一、简介

​ jvm(Java Virtual Machine),即我们的Java虚拟机,其内存结构可以分为5个部分,即 堆、虚拟机栈、本地方法栈、方法区、本地计数器。

二、堆

​ 堆区主要存放对象实例及数组,我们所new出来的对象都存在这个区域。

​ 堆区是所有线程共享的,在虚拟机启动时创建。

​ 堆区是GC(垃圾回收)最频繁也是最主要的区域。

三、虚拟机栈

​ 虚拟机栈即我们常听说的栈,用于存储局部变量表、动态链接、操作数和方法出口等信息。

​ 虚拟机栈是线程私有的,生命周期与线程一样。

​ 虚拟机栈定义了两种异常类型,StackOverFlowError(栈溢出)和 OutOfMemoryError(内存溢出)。

​ 虚拟机栈主要运行Java方法,方法运行时,创建一个栈帧,携带方法相关的局部变量表、动态链接、操作数和方法出口等信息入栈,方法结束,栈帧出栈

四、本地方法栈

​ 本地方法栈与虚拟机栈运行机制相同,只不过一个是运行Java方法,一个是运行native方法。

​ 在很多虚拟机中(HotSpot),会将两者一起使用。

五、方法区

​ 方法区是全局共享的。

​ 方法区存储了 类的信息、构造函数、类中的字段和方法、静态变量、final常量 等信息、

​ 在Hotspot虚拟机中,方法区对应持久代,很少被执行GC,一旦GC主要是对常量池的回收和已加载类的卸载。

六、程序计数器

​ 程序计数器是线程私有的。

​ 程序计数器是划分在CPU上的,程序员无法操作。

​ 它是JVM在解析 .class字节码文件时,用来记录执行到哪一行的一个记录。

​ 如果执行的是native方法,则计数器的值为空。

​ 此内存区是唯一不会抛出OutOfMemoryError的区域。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值