jvm运行时数据区简述

jvm将其运行时所管理的内存分为了几个区域,根据《java虚拟机规范(第二版)》规定,jvm所管理的内存主要包括五块区域:堆(Heap)、虚拟机栈(VM Stack)、本地方法栈(Native Method Stack)、程序计数器(Program Counter Register)以及方法区(Method Area).如下图:



①堆(Heap):对于大部分人来说最熟悉的就是堆了,也就是存放对象的实例的区域.堆是垃圾回收器管理的主要区域,因此也被称为GC堆,各条线程共享的运行时数据区域.

②虚拟机栈(VM栈):这个虚拟机栈就是书中常提到的栈,每一条虚拟机线程都有自己的虚拟机栈,即线程私有,正因为如此局部变量是不存在线程安全的问题的.虚拟机栈主要用于存储栈帧,什么是栈帧?目前就先简单理解为运行一个方法的一部分上下文吧,存储着局部变量表、操作数栈等信息.以后我会专门写一篇关于栈帧的文章,因为这个概念不仅存在与jvm中.

③本地方法栈(Native Method栈):与虚拟机栈类似,区别在于虚拟机栈为java方法服务,而本地方法栈则是为native方法服务

④程序计数器(Program Counter Register):保存着jvm某一线程将要执行的jvm字节码指令的地址(如果是native方法,则为空),线程私有.

⑤方法区(Method Area):顾名思义,方法区必然保存着方法,与.text段(以后解释)有点类似.但它保存了更多数据:每一个类的结构信息、常量池、方法的字节码内容(包括构造器以及类初始化代码)等等.该区域线程共享

推荐一篇博文:http://hxraid.iteye.com/blog/676235


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值