美文网首页
jvm 基础第一节: jvm数据区

jvm 基础第一节: jvm数据区

作者: dimdark | 来源:发表于2018-03-01 14:09 被阅读0次

程序内存管理分为手动内存管理和自动内存管理, 而java属于自动内存管理,因此jvm的职能之一就是程序内存管理

jvm运行时内存中数据区可以大致分为5个区域,两种类型:

runtime_data_memory
五个数据区域: 程序计数器 java虚拟机栈 本地方法栈 java堆 方法区
两种类型:
  • 线程私有的数据区域(其生命周期与线程的生命周期保持一致)
    1. 程序计数器(program counter register): 程序计数器存储的值是字节码指令的起始地址, 字节码解释器通过程序计数器里的值来获取下一条将要执行的字节码指令.java中每个线程都需要一个独立的程序计数器, 各个线程之间的程序计数器互不影响, 独立存储, 因此是"线程私有"的.

    2. java虚拟机栈(java vm stack): 方法执行时会创建一个栈帧, 用于存储局部变量表, 操作数栈, 动态链接, 方法出口等信息.每一个方法从调用直至执行完成的过程就对应着一个栈帧在虚拟机中入栈到出栈的过程.

    3. 本地方法栈(native method stack): 与java虚拟机栈类似, 不过java虚拟机栈为虚拟机执行java方法(字节码)服务, 而本地方法栈为虚拟机使用到的native方法服务

注: 在运行期间java虚拟机栈和本地方法栈可能会出现StackOverflowErrorOutOfMemoryError异常

java虚拟机栈的图示:


vmstack
  • 所有线程共享的数据区域
    1. 方法区(method area): 用于存储已被虚拟机加载的类信息, 常量, 静态变量, 即时编译器编译后的代码等数据.
    2. java堆(heap): 几乎所有对象的实例都会在堆上进行内存分配和初始化

附:
直接内存(direct memory): 不是运行时虚拟机数据区的一部分, 该空间位于虚拟机外, 不过由于直接内存的性能较好, 所以有的工作需要使用直接内存来提高性能, 可以通过NIO和NIO2来申请直接内存.

相关文章

  • 深入浅出Java虚拟机

    HotSopt版本1.JVM基础JVMJDKJRE 2.JVM运行时数据区是什么? 学了有啥用? 数据、指令、控制...

  • jvm 基础第一节: jvm数据区

    程序内存管理分为手动内存管理和自动内存管理, 而java属于自动内存管理,因此jvm的职能之一就是程序内存管理 j...

  • Java虚拟机02-JVM运行时数据区

    1 JVM运行时数据区 JVM运行时数据区(JVM Runtime Area)其实就是指JVM在运行期间,其对计算...

  • Java大佬之学习历程(一)

    基础篇 JVM: ①JVM内存结构: 堆、栈、方法区、直接内存、堆和栈区别, ②JVM参数及...

  • JVM学习笔记

    JVM 注意:0、JVM运行时数据区和JVM内存模型不要搞混1、运行时数据区可以分为:堆、方法区、虚拟机栈、本地方...

  • JVM内存模型

    一、JVM内存模型图解 JVM 运行时数据区 (JVM Runtime Area) 其实就是指 JVM 在运行期间...

  • JVM结构书目录

    JVM结构 JVM结构之运行时数据区 JVM结构之执行引擎 JVM结构之类加载子系统 JVM结构之本地方法接口(J...

  • Java程序员必会知识——JVM内存模型

    JVM基本结构 JVM内存区域主要分为 、 和 。 概念介绍 方法区(线程共享数据区域) 主要存放JVM加载的类信...

  • 5.JVM层GC调优

    JVM与调优 imooc JVM Markdown JVM的内存结构 运行时数据区 程序计数器PC Regist...

  • jvm内存模型及GC记录

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

网友评论

      本文标题:jvm 基础第一节: jvm数据区

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