文章详情

短信预约信息系统项目管理师 报名、考试、查分时间动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

JVM中的运行时数据区域是哪些

2016-12-08 09:53

关注

首先看图:

19.png

java相关视频教程:java课程

1.程序计数器(PC)

是线程独享的。是一块较小的内存,是当前线程所执行的字节码的行号指示器,是Java虚拟机规范中唯一没有被规定OOM(OutOfMemoryError)的区域。

2.Java虚拟机栈

是线程独享的。生命周期和线程相同。是Java方法执行的内存模型。执行每个方法都会创建一个栈帧,用于存储局部变量和操作数(对象引用)。局部变量所需要的内存空间大小在编译期间完成分配。所以栈帧的大小是不会改变的。

存在两种异常情况:

1)若线程请求深度大于栈的深度,会抛出StackOverFlowError。

2)若栈在动态扩展的时候无法请求足够的内存,会抛出OOM。

3.堆

Java堆是所有线程共享的。是虚拟机启动的时候创建的。存放的是对象的实例和数组。所占内存最大。分为新生代(Young区)、老年代(Old区)。新生代又分为Eden区、Servior区。Servior区又分为From space区和To space区。Eden区和Servior区的内存比例为8:1。当扩展内存大于可用内存的时候,会抛出OOM。

56c263aa5dd447199358838d4745abf.png

4.本地方法栈

本地方法栈是线程独享的。与Java虚拟机栈类似,但不是为Java方法(字节码)服务,而是为本地非Java方法服务。也会抛出StackOverFlowError和OOM。

5.方法区

方法区是所有线程共享的。用于存储已经被虚拟机加载的类信息、常量、静态变量等数据,又称为非堆(Non-Heap)。方法区又称为“永久代”,GC很少在这个区域进行,但不代表不会回收。这个区域回收目标主要是针对常量池的回收和对类型的卸载。当内存申请大于实际可用内存时,会抛出OOM。

java相关文章推荐:java入门

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯