详解Java虚拟机管理的内存运行时数据区域

概述
Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同数据区域。这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则是依赖用户线程的启动和结束而建立和销毁。
程序计数器
程序计数器是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。在虚拟机的概念模型里,字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支,循环,跳转,异常处理,线程恢复等基础功能都需要依赖这个计数器来完成。
如果线程正在执行的是一个Java方法,这个计数器记录的是正在执行的虚拟机字节码指令的地址,如果正在执行的是Native方法,这个计数器值则为空。此内存区域是唯一个在Java虚拟机规范中没有规定任何OurOfMemoryError情况的区域。
虚拟机栈
与程序计数器一样,Java虚拟机栈也是线程私有的,它的生命周期与线程相同。虚拟机栈描述的是Java方法执行的内存模型,每个方法在执行的同时都会创建一个栈帧(Stack Frame)用于存储局部变量表,操作数栈,动态链接,方法出口等信息。每一个方法从调用直至执行完成的过程,就对应着一个栈帧在虚拟机栈中入栈到出栈的过程。
局部变量表存放了编译期可知的各种基本数据类型(boolean、byte、char、short、int、float、long、double)、对象引用(Object reference)和字节码指令地址(returnAddress类型)。
在Java虚拟机规范中,对于此区域规定了两种异常状况:如果线程请求的栈深度大于虚拟机所允许的深度,将抛出StackOverflowError异常;如果虚拟机栈可以动态扩展,当扩展时无法申请到足够的内存时会抛出OutOfMemoryError异常。
对于32位的jvm,默认大小为256kb, 而64位的jvm, 默认大小为512kb,可以通过-Xss设置虚拟机栈的最大值。不过如果设置过大,会影响到可创建的线程数量。
方法区
方法区与Java堆一样,是各个线程共享的内存区域,它用于存储已被虚拟机加载的类信息,常量,静态变量,即时编译器编译后的代码等数据。
根据Java虚拟机规范的规定,当方法区无法满足内存分配需求时,将抛出OutOfMemoryError异常。
本地方法栈
本地方法栈(Native Method Stacks)与虚拟机栈所发挥的作用非常类似,区别在于虚拟机栈为虚拟机执行Java方法服务,而本地方法栈则是为虚拟机使用到的Native方法服务。
Java堆
Java堆(java heap)是Java虚拟机所管理的内存中最大的一块,它是被所有线程共享的一块内存区域,在虚拟机启动时创建,此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例都在这里分配内存。
Java堆是垃圾收集管理的主要区域,因此很多时候也被称为 "GC" 堆。
根据Java虚拟机规范的规定,Java堆可以处于物理上不连续的内存空间中,只要逻辑上是连续的即可,就像我们的磁盘空间一样。在实现时,既可以实现成固定大小的,也可以是可扩展的,不过当前主流的虚拟机都是按照可扩展来实现的。(通过-Xmx和-Xms控制)如果在堆中没有内存完成实例分配,并且堆也无法再扩展时,将会抛出OutOfMemoryError异常。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# Java虚拟机
# Java虚拟机详解
# Java虚拟机内存管理
# 从JVM的内存管理角度分析Java的GC垃圾回收机制
# JVM内存管理之JAVA语言的内存管理详解
# 浅谈java内存管理与内存溢出异常
# 详解Java内存管理中的JVM垃圾回收
# java虚拟机深入学习之内存管理机制
# 详解JAVA 内存管理
# java内存管理关系及内存泄露的原理分析
# Java内存区域管理详解
# 的是
# 抛出
# 则是
# 行号
# 都是
# 量表
# 都有
# 就像
# 都在
# 将会
# 两种
# 已被
# 把它
# 它是
# 可以通过
# 希望能
# 被称为
# 它可以
# 时就
# 跳转
相关文章:
建站VPS配置与SEO优化指南:关键词排名提升策略
如何通过cPanel快速搭建网站?
免费公司网站制作软件,如何申请免费主页空间做自己的网站?
,网页ppt怎么弄成自己的ppt?
极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?
建站之星×万网:智能建站系统+自助建站平台一键生成
建站之星如何一键生成手机站?
,sp开头的版面叫什么?
宝盒自助建站智能生成技巧:SEO优化与关键词设置指南
如何解决ASP生成WAP建站中文乱码问题?
网站建设设计制作营销公司南阳,如何策划设计和建设网站?
Python lxml的etree和ElementTree有什么区别
C#怎么使用委托和事件 C# delegate与event编程方法
盐城做公司网站,江苏电子版退休证办理流程?
建站主机服务器选购指南:轻量应用与VPS配置解析
齐河建站公司:营销型网站建设与SEO优化双核驱动策略
如何在IIS中新建站点并配置端口与IP地址?
如何通过wdcp面板快速创建网站?
北京的网站制作公司有哪些,哪个视频网站最好?
学校为何禁止电信移动建设网站?
如何高效完成独享虚拟主机建站?
常州企业网站制作公司,全国继续教育网怎么登录?
清除minerd进程的简单方法
高防服务器租用指南:配置选择与快速部署攻略
正规网站制作公司有哪些,目前国内哪家网页网站制作设计公司比较专业靠谱?口碑好?
青岛网站建设如何选择本地服务器?
怀化网站制作公司,怀化新生儿上户网上办理流程?
台州网站建设制作公司,浙江手机无犯罪记录证明怎么开?
建站主机与虚拟主机有何区别?如何选择最优方案?
南京网站制作费用,南京远驱官方网站?
如何设置并定期更换建站之星安全管理员密码?
济南专业网站制作公司,济南信息工程学校怎么样?
建站之星图片链接生成指南:自助建站与智能设计教程
建站org新手必看:2024最新搭建流程与模板选择技巧
简历在线制作网站免费版,如何创建个人简历?
洛阳网站制作公司有哪些,洛阳的招聘网站都有哪些?
学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?
如何通过VPS搭建网站快速盈利?
建站主机核心功能解析:服务器选择与网站搭建流程指南
北京网页设计制作网站有哪些,继续教育自动播放怎么设置?
如何通过智能用户系统一键生成高效建站方案?
建站之星后台密码遗忘或太弱?如何重置与强化?
定制建站方案优化指南:企业官网开发与建站费用解析
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
建站主机如何选?性能与价格怎样平衡?
建站上传速度慢?如何优化加速网站加载效率?
阿里云网站制作公司,阿里云快速搭建网站好用吗?
整人网站在线制作软件,整蛊网站退不出去必须要打我是白痴才能出去?
高防服务器如何保障网站安全无虞?
大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?
*请认真填写需求信息,我们会在24小时内与您取得联系。