JVM内存划分(低配2.0版)

        jvm在运行时,数据区域通常划分为:堆、栈、本地方法栈、程序计数器、方法区,如图

 

  •  程序计数器

        也被称作PC寄存器,用于存储程序将要执行的指令代码,由执行引擎读取下一条指令

        它是程序执行流程的指示器,分支、循环、跳转等基础功能都要依赖这个计数器完成

        程序计数器内存空间较小,但运行速度是最快的

        每个线程都有其自己的程序计数器,并且是线程私有的,生命周期与线程生命周期一致

        由于它仅存储执行指令,它是唯一一个在 JVM 中没有 OutOfMemoryError 的情况的区域

        

        我们可以通过 javap -v .class 反编译字节码文件

 

  • Java栈

        也被称作虚拟机栈:保存局部变量以及部分结果,并参与方法的调用与返回

        栈是一种快速有效的分配存储的方式,访问速度仅次于程序计数器

        栈操作只有两种:方法执行时进栈;方法结束后出栈

        栈解决程序运行的问题,程序如何执行,怎么处理数据等等

        每个线程,都会创建一个虚拟机栈,并且是线程私有的,其内部保存栈帧,对应着方法调用

   

  • Java堆

        存储实体,即创建的对象(首地址存放在栈中)

        堆解决数据存储的问题,数据如何存,存哪里

        堆内存的变量都有默认初始化值,不同类型不一样

        当实体不再使用时,就会被垃圾回收机制处理

   

  • 本地方法栈

        本地方法栈,用于管理本地方法的调用,线程私有

        本地方法是使用C或C++语言实现的方法,是非Java语言开发的Java方法,通过接口实现

  • 方法区

        是被线程共享的区域,JVM在装载类文件时,用于存储类型信息,即类的描述信息:类的基本信息(类的限定名,类的直接父类的限定名,类的类型如接口,类的访问修饰符,直接超接口的全限定名的有序列表),已加载的类的详细信息(运行常量池,字段信息,静态变量,到类classloader的引用,到类class的引用等)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值