Run-time Data Areas


详细来看:

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。

4.本地方法栈

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

5.方法区

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

【深入理解JVM】JVM的五大运行时数据区域相关推荐

  1. JVM学习笔记:Java运行时数据区域

    JVM执行Java程序的过程中,会使用到各种数据区域,这些区域有各自的用途.创建和销毁时间.根据<Java虚拟机规范>,JVM包括下列几个运行时数据区域,如下图所示: 其中红色部分是线程私 ...

  2. Java JVM内存模型(运行时数据区域)详解

    详细介绍了JVM运行时数据区域,包括方法区.堆空间.栈空间.本地方法栈.程序计数器.常量池.直接内存.字面量.符号引用.直接引用. Java程序在运行时,需要在内存中的分配空间.为了提高运算效率,ja ...

  3. JVM(类加载、运行时数据区、堆内存、方法区、本地接口、执行引擎和垃圾回收)java虚拟机(JVM)的超详细知识点

    JVM虚拟机 一.JVM的概述 1.为什么要学习JVM 2.虚拟机 3.JVM的作用 作用 特点 4.JVM的位置 5.JVM的分类 6.各个组成部分的用途 7.Java 代码的执行流程 8.JVM ...

  4. JVM运行时数据区域——为什么jdk8用元空间替换了永久代

    以局部窥全局,这个问题其实很复杂,要弄清楚这个问题,首先要对JVM运行时数据区域划分以及各个数据区域的作用了和指掌. JVM运行时数据区域总览 JVM在执行Java程序的过程中(简称运行时)会把它所管 ...

  5. 12.JDK1.8 JVM运行时数据区域概览、各区域介绍、程序计数器、Java虚拟机栈、本地方法栈、堆、堆空间内存分配(默认情况下)、字符串常量池、元数据区、jvm参数配置

    12.JDK1.8 JVM运行时数据区域概览 12.1.JDK1.8 JVM运行时数据区域概览 12.2.各区域介绍 12.3.各区域介绍 12.3.1.程序计数器 12.3.2.Java虚拟机栈 1 ...

  6. [jvm]运行时数据区域详解

    了解虚拟机是怎么使用内存的,有助于我们解决和排查内存泄漏和溢出方面的问题.详解java虚拟机内存的各个区域,分析这些区域的作用服务对象以及可能发生的问题. 一.运行时数据区域 java虚拟机在执行ja ...

  7. 一. JVM发展史,运行时数据区域,四大引用

    一.JVM的出现 JVM将字节码解释成不同os下的机器指令,有了jvm,java语言在不同平台上运行时不需要重新编译 虚拟机发展史 (1)Sun Classic classic jvm要么采用纯解释器 ...

  8. JVM学习笔记② JVM运行时数据区域

    JVM所管理的内存将会包括以下几个运行时数据区域: 方法区(Method Area) 方法区是各个线程共享的区域,存放类信息.常量.静态变量.即时编译器编译后的代码等数据.虽然Java虚拟机规范把方法 ...

  9. Java 运行时数据区域,哪些是线程隔离的?哪些又是公有的?

    来自:会点代码的大叔 JVM 运行时数据区域大致可以分为:程序计数器.虚拟机栈.本地方法栈.堆区.元空间.运行时常量池.直接内存等区域:就是下面这个样子的: 其中有些区域,随着 JDK 版本的升级不断 ...

最新文章

  1. c语言结构体中的ps,练习结构体的时候出错,(ps有两个函数还没写)
  2. Python错误“ImportError: No module named MySQLdb”解决方法
  3. 计算机如何改变沟通方式,雅思阅读模拟题:计算机改变沟通方式
  4. echarts setoption方法_在Vue和React中使用ECharts的多种方法
  5. aop:aspectj-autoproxy /
  6. 陶哲轩实分析定义8.5.5的一个注记
  7. windows C++ 通过WMI获取底层信息
  8. ios信号从4g变成无服务器,苹果信号满格显示是4g却没网络
  9. 【转】WCF与Web API 区别(应用场景)
  10. Android -- I/O CALL SMS Layout
  11. Python 紧急修复远程代码执行漏洞
  12. 重构分析21: 被拒绝的遗赠(Refused Bequest)
  13. java fadein_jQuery中fadein与fadeout方法用法示例
  14. android原生TTS+语音引擎 实现纯离线 免费的中英TTS
  15. USDP使用笔记(五)设置Hive on Tez解决return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask问题
  16. 插入排序一块说说-很合适~~~二分查找和折半
  17. python中添加.pth_使用.pth文件扩展python环境路径
  18. html扩展调用qq邮箱
  19. 打包失败,Gradle构建失败问题良心解决,看完这个一定让你轻松
  20. npm ERR! code EINVAL npm ERR! EINVAL: invalid argument, read

热门文章

  1. Qt富文本编辑器QTextDocument
  2. Android Broadcast 和 BroadcastReceiver的权限限制
  3. 【江苏大学研究生小记】开学3个月的感想
  4. SELinux系列(十三)—默认安全上下文的查询和修改(semanage命令)
  5. powershell自动化操作AD域、Exchange邮箱系列(7)—get-aduser/get-user获取信息 取值方法及区别
  6. Windows域控设置 AD域策略屏蔽端口 禁用端口【全域策略生效】
  7. 离婚冷静期有用吗?全国哪个省份的情侣最想结婚?大数据告诉你
  8. java中this,super,extends,implements相关继承概念讲解
  9. 前端界面根据条件动态显示图片
  10. centos可视化打开和修改文件(隐藏文件)