美文网首页
JVM运行时数据区和各个区域的作用

JVM运行时数据区和各个区域的作用

作者: 单v纯微笑 | 来源:发表于2018-12-29 17:21 被阅读0次

一、JVM主要分为5个核心区域(6个子区域),分别是:

  1. 程序计数器
  2. Java虚拟机栈
  3. 本地方法栈
  4. Java堆
  5. 方法区
  6. *运行时常量池(属于“方法区”的一部分)

二、各个区域作用和描述

序号 区域名称 共享 作用 异常 备注
1 程序计数器 线程私有 记录当前线程锁执行的字节码行号指示器。 Java虚拟机规范中唯一一个没有规定OutOfMemoryError(内存不足错误)的区域。 --
2 Java虚拟机栈 线程私有 存放局部变量表、操作数据栈、动态链接、方法出口等信息。 栈深大于允许的最大深度,抛出StackOverflowError(栈溢出错误)。
内存不足时,抛出OutOfMemoryError(内存不足错误)。
常说的“栈”说的就是Java虚拟机栈,或者是Java虚拟机栈中的局部变量表。
3 本地方法栈 线程私有 和Java虚拟机栈类似,不过是为JVM用到的Native方法服务。 同上 --
4 Java堆 线程共享 存放实例化数据。 内存不足时,抛出OutOfMemoryError(内存不足错误)。 通过-Xmx和-Xms控制大小。
GC的主要管理对象。
5 方法区 线程共享 存放类信息(版本、字段、方法、接口等)、常量、静态变量、即时编译后的代码等数据。 内存不足时,抛出OutOfMemoryError(内存不足错误)。 --
6 运行时常量池 线程共享 存放编译期生成的各种字面量和符号引用。 内存不足时,抛出OutOfMemoryError(内存不足错误)。 属于“方法区”的一部分。
7 直接内存 -- 如NIO可以使用Native函数库直接分配堆外内存,该内存受计算机内存限制。 内存不足时,抛出OutOfMemoryError(内存不足错误)。 不是JVM运行时数据区的一部分,也不是JVM虚拟机规范中定义的内存区域。但这部分内存也被频繁的使用。所以放到一起。

*参考《深入理解Java虚拟机 JVM高级特性与最佳实践》一书

相关文章

  • jvm内存模型及GC记录

    在jvm中有一块非常重要的区域,就是jvm运行时数据区。今天对该区域做下总结和记录: 在讨论jvm运行时数据区前,...

  • JVM和性能优化

    JVM和性能优化 1、Java内存区域 虚拟机的历史 未来的Java技术一览 运行时数据区域 各个区域的作用程序计...

  • JVM运行时数据区和各个区域的作用

    一、JVM主要分为5个核心区域(6个子区域),分别是: 程序计数器Java虚拟机栈本地方法栈Java堆方法区*运行...

  • 超值干货 | 值得收藏:精选BATJ面试突击500题详解:JVM

    JVM Java内存区域 说一下 JVM 的主要组成部分及其作用? 说一下 JVM 运行时数据区 深拷贝和浅拷贝 ...

  • JVM Run-Time Data Areas & 参数相关

    jvm定义了各个运行时数据区: 运行时数据区: <=== 是一个规范,内存结构是一个实现1)部分运行时数据区域是在...

  • jvm 运行时数据区-01

    jvm 运行时数据区 jvm 运行时数据区 ,将内存划分为5个区域,java 代码在运行时 类里面的 组成部分 分...

  • Java内存管理

    2.9 JVM内存管理 2.9.1 运行时数据区域 JVM所管理的内存可以分为一下几个运行时数据区域: 其中方法区...

  • java面试题 --- JVM之体系结构

    1. JVM 由哪些区域构成?由类加载器和运行时数据区构成;运行时数据区又分为线程私有和线程共享两大区域,线程私有...

  • JVM总结-个人向

    内存区域 JVM的主要组成部分和作用JVM整体来看分为:运行时数据区,类加载子系统、执行引擎以及本地方法接口(与n...

  • Java虚拟机(JVM)面试题(2020最新版)

    ##Java内存区域 说一下 JVM 的主要组成部分及其作用? 说一下 JVM 运行时数据区 Java 虚拟机在执...

网友评论

      本文标题:JVM运行时数据区和各个区域的作用

      本文链接:https://www.haomeiwen.com/subject/aztplqtx.html