1.程序计数器

程序计数器是一段小的内存空间,可以把它看成当成线程所执行的字节码的行号指示器。这个区域不会出现OUtOfMemoryError异常。

如果线程执行的是Java方法,则计数器记录的是正在执行的虚拟机字节码指令的地址;如果是Native方法,则计数器为空。

java虚拟机多线程是使用线程轮流切换并分配处理执行时间的方式来实现的,在任何一个确定的时刻,一个处理器都只会执行一条线程中的指令。为了线程切换后能够恢复到正确的执行位置,每条线程都需要一套独立的线程计数器

2.JAVA虚拟机栈

虚拟机栈也是线程私有的,它描述的是Java方法执行的内存模型。每个方法对应一个栈帧,存储这个方法的各种信息。每次一个方法的执行,就对应一个栈帧在虚拟机栈入栈到出栈的过程。

如果线程请求的栈深度大于虚拟机所允许的深度,就会出现StackOverFlowException。如果允许动态扩展,在扩展的过程中,如果无法申请到足够的内存,则会抛出OutOfMemoryException异常。

3.本地方法栈

与虚拟机栈相似,区别是虚拟机栈执行java方法,而本地虚拟机使用到的是native方法服务。

4..Java堆

Java堆是所有线程共享的内存区域,在虚拟机启动的时候创建。此内存区域的目的是存放对象实例,几乎所有对象实例都在这里分配内存。

Java堆是垃圾收集管理的主要区域。

5.方法区

方法区可以看作堆的逻辑部分,是各个线程共享的内存区域,存储着虚拟机加载的常量,静态变量,以及类信息。这个区域的内存回收的目标就是针对常亮池的回收和对类型的卸载,也是较为难处理的部分。

直接内存

直接内存并不是虚拟机运行时数据区的一部分,它是加入的NIO类引入的基于通道的存储方式,它的原理是从用native函数库得到一个堆外内存,然后用一个java类DirectByteBuffer来指向它,使得内存的容量增加。

JAVA虚拟机运行数据区相关推荐

  1. 《深入理解Java虚拟机》(二)Java虚拟机运行时数据区

    Java虚拟机运行时数据区 详解 2.1 概述 本文参考的是周志明的 <深入理解Java虚拟机>第二章 ,为了整理思路,简单记录一下,方便后期查阅. 2.2 运行时数据区域 Java虚拟机 ...

  2. Java虚拟机运行时栈帧结构--《深入理解Java虚拟机》学习笔记及个人理解(二)

    Java虚拟机运行时栈帧结构(周志明书上P237页) 栈帧是什么? 栈帧是一种数据结构,用于虚拟机进行方法的调用和执行. 栈帧是虚拟机栈的栈元素,也就是入栈和出栈的一个单元. 2018.1.2更新(在 ...

  3. Java虚拟机 —— 运行时数据区

    Java虚拟机内存,是指JVM的运行时数据区域,主要分为:方法区.堆.虚拟机栈.本地方法栈.程序计数器.其中方法区和堆为索引线程的共享数据区,而虚拟机栈.本地方法栈.程序计数器为线程隔离的数据区. 程 ...

  4. 笔记:Java虚拟机运行时数据区

    Java虚拟机在执行Java程序的过程中会把它管的内存划分为以下若干个不同的区域: 1.程序计数器 程序计数器是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器:由于Java虚拟机的 ...

  5. Java虚拟机运行时数据区

    将从<深入理解Java虚拟机:JVM高级特性与最佳实践>和 The Java® Virtual Machine Specification 中对于Java运行时数据区的描述整理记录一下 从 ...

  6. c++指定在某一线程运行_深入理解Java虚拟机-运行时数据区

    在Java虚拟机的概念中,运行时数据区又被称为Java内存区域.主要由线程私有的程序计数器.虚拟机栈和本地方法栈以及线程共享的堆和方法区组成. 程序计数器 程序计数器在Java内存中占据的空间比较小, ...

  7. Java 虚拟机运行时数据区

    运行时数据区域包括如下几个区域: 1.程序计数器 英文为 Program Counter,简称 PC,此内存区域存储指令位置,为每个线程独占. 取PC中的值,找到对应位置的指令,然后执行该指令,然后将 ...

  8. 运行数据区②---堆

    本篇目录 1. 核心概述 1.1 配置jvm及查看jvm进程 1.2 分析SimpleHeap的jvm情况 1.3 堆的细分内存结构 JDK 7以前: 新生区+老年区+永久区 JDK 8以后: 新生区 ...

  9. 运行数据区③---方法区

    本篇目录 1. 堆.栈.方法区的交互关系 1.1 运行时数据区结构图 1.2 堆.栈.方法区的交互关系 2. 方法区的理解 3. 设置方法区大小与OOM 3.1 设置方法区大小 3.2 方法区OOM ...

最新文章

  1. 在线HTML编辑器使用入门(Kindeditor)
  2. 国内可用的NTP服务器地址列表 网络时间 服务器
  3. c#是否参入中间变量交换变量的几种方法
  4. Eclipse is running in a JRE, but a JDK is required错误的解决
  5. SMS短信的C语言代码摘抄
  6. 用汇编的眼光看C++(之拷贝、赋值函数)
  7. SQLite事务与自增深度分析
  8. Python稳基修炼的经典案例10(计算机二级、初学者必会turtle库例题)
  9. 解决linux中xorg占用gpu问题
  10. linux已开机时间,Linux查看系统开机时间
  11. linux系统的手机刷机包,ubuntu系统修复工具-ubuntu手机操作系统刷机包v20.04 官方版 - 极光下载站...
  12. DMX协议和RDM协议
  13. java——编程案例
  14. 非凡的键盘钢琴音源 XLN Audio Addictive Keys Complete 1.1.8 WiN-MAC
  15. native8081端口 react_ReactNative真机运行时8081端口被占用解决方案
  16. cf 581A— Vasya the Hipster
  17. js 绘画js 绘画路径_绘画是一种技能,而不是才能
  18. 对话系统中的中文自然语言理解 (NLU) 任务介绍
  19. 邮箱发信数量被限制了,有什么方法可以解决么?
  20. 用C#写差异文件备份工具

热门文章

  1. boost.asio系列——io_service
  2. 【玩转cocos2d-x之七】场景类CCScene和布景类CCLayer
  3. ADO学习(四)ADO扩展IADORecordBinding
  4. 性能优化实战|使用eBPF代替iptables优化服务网格数据面性能
  5. 微服务架构的终极模式?
  6. 2021年,戴尔的显示器竟然出现了弹出式摄像头
  7. 音视频技术开发周刊 | 158
  8. 大牛书单 | 搜索大牛都读什么书?
  9. 大牛书单 | 腾讯运维大咖陪你过724
  10. 分支管理---解决冲突