1.JVM运行时数据区域的划分

a.程序计数器(Program Counter Register)

一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器。每个线程拥有独立的一个计数器,如果当前执行的是Native方法,则计数器值为空。

b.JVM栈(Java Virtual Machine Stack)

描述Java方法执行的内存模型,每个方法在执行的同时都会创建一个栈帧(Stacks Frame)用于存储局部变量表,操作数栈,动态链接,方法出口等信息。

每一个方法从调用直至执行完成的过程,就对应一个栈帧在JVM栈中入栈到出栈的过程。

c.本地方法栈(Native Method Stack)

与JVM栈发挥的作用非常相似,区别不过是JVM栈为JVM执行Java方法服务,而本地方法栈为JVM使用到的Native方法服务。

d.Java堆(Java Heap)

Java堆是被所有线程共享的一块内存区域,在JVM启动时创建。所有的对象实例以及数组都要在这里分配内存,但是随着JIT编译器的发展,渐渐变得不是那么绝对了。

e.方法区(Method Area)

存储已被JVM加载的类信息,常量,静态变量,即时编译器编译后的代码等数据。

虽然JVM规范把方法区描述为堆的一个逻辑部分,但它却有一个别名叫做Non-Heap。

f.运行时常量池(Runtime Constant Pool)

方法区的一部分。Class文件中除了有类的版本,字段,方法,接口等描述信息外,还有一项是常量池,用于存放编译器生成的各种字面量和符号引用。

g.直接内存(Direct Memory)

不是JVM运行时数据区的一部分,也不是JVM规范中定义的内存区域。

例如:JDK1.4中新引入的NIO(New Input/Output)类,一种基于通道与缓冲区的I/O方式,可以使用Native函数库直接操作堆外内存,然后通过存储在Java堆中的DirectByteBuffer对象作为这块内存的引用,避免了在Java堆和Native堆中来回复制数据。

java runtime类 heap_Java 进阶(一) JVM运行时内存模型相关推荐

  1. [转]JVM运行时内存结构

    [转]http://www.cnblogs.com/dolphin0520/p/3783345.html 目录[-] 1.为什么会有年轻代 2.年轻代中的GC 3.一个对象的这一辈子 4.有关年轻代的 ...

  2. 尝试用HSDB分析JVM运行时内存理解Java多态实现机制

    测试代码 // 接口 package ziya; public interface TestParent {void show(); }package ziya; public class Paren ...

  3. JVM运行时内存概念-堆栈及新生代、老年代、持久代

    JVM内存有一些按不同标准划分的概念,这里来理清一下. 一.首先java虚拟机规范定义了java运行时数据区在概念上应该有的分区,这是抽象概念不对应也不限制物理上的具体实现,不同的虚拟机可以有不同的实 ...

  4. java运行时内存模型

    运行时内存分为: 1.方法区 2.堆 3.虚拟机栈 4.本地方法栈 5.程序计数器 方法区.堆是共享的,所有线程都可以读取 虚拟机栈.本地方法栈.程序计数器是线程私有的,每个线程单独一套,它们在线程创 ...

  5. 三年Java开发,你连基础的JVM运行时内存布局都忘了

    面:为什么要使用双亲委派机制去加载类? 答:避免多份同样字节码的加载,浪费内存. 类的加载方式 隐式加载:new 显示加载:loadClass.forName等 类的装载过程如下图: 面:loadCl ...

  6. jvm内存模型和java内存模型_JVM运行时内存模型综述

    JVM内存模型 JVM分为五个区域:虚拟机栈.本地方法栈.方法区.堆.程序计数器. JVM不同区域的占用内存大小不同,一般情况下堆最大,程序计数器较小. JVM五个区中虚拟机栈.本地方法栈.程序计数器 ...

  7. 在没有任何数据时进行无效的读取尝试。_技术转载——JVM运行时内存是怎么分布的?...

    写在前面:2020年面试必备的Java后端进阶面试题总结了一份复习指南在Github上,内容详细,图文并茂,有需要学习的朋友可以Star一下! GitHub地址:https://github.com/ ...

  8. JVM运行时内存分区

    什么是JVM?JVM概述--初识JVM(类加载器,垃圾回收器,执行引擎) 上一篇博客我们对jvm以及它的三个"部件"有了初步的认识,这一篇我们探讨一下源码经过编译.加载后这些数据被 ...

  9. JVM 运行时内存空间详解——元空间

    通过上一篇文章,我们大体了解了JVM的整体架构,其分为:元数据(JDK7是方法区).堆.虚拟机栈.本地方法栈.程序计数器几个部分. 本篇文章,咱们对元空间进行剖析,一探究竟. 1. 元空间介绍 在JD ...

最新文章

  1. android support design library eclipse,Eclipse下使用Android Design Support Library中的控件
  2. [密码学基础][每个信息安全博士生应该知道的52件事][Bristol52]45.描述一些对抗RSA侧信道攻击的防御方法
  3. JavaScript-严格检查模式
  4. poi处理excel导出
  5. chrome鼠标手势_Chrome插件推荐——第一弹
  6. 进入全屏 nodejs+express+mysql实现restful风格的增删改查示例
  7. Eclipse中不使用内嵌Maven
  8. 算法-冒泡排序和快速排序
  9. 区块链 分片技术和闪电网络区别
  10. 【分治】寻找主元素的3种算法
  11. [转]什么是UAT测试?
  12. JSON转EXCEL代码( java)
  13. Linux快捷键及命令
  14. 报告:使用加密货币进行跨境汇款的人数越来越多
  15. mac word2016 去除页眉下面的横线
  16. Word中的公式编辑器插入自动编号公式时,隐藏必要的分章节字符串的办法
  17. eclipse插件升级
  18. 5个文献免费下载神器
  19. 白盒测试模板用例:三角形测试
  20. android之按钮添加声音

热门文章

  1. 简单五步,实现物联网批量创建设备
  2. 如何快速完成企业应用IPv6改造
  3. WAF+SLB负载不均衡案例分享
  4. 在 Kubernetes 集群中使用 MetalLB 作为 LoadBalancer(下)
  5. HTTPS 协议到底比 HTTP 协议多些什么?
  6. 边缘计算助力云游戏成为5G时代的杀手级应用
  7. 汇量科技收购热云数据,加速SaaS工具生态布局
  8. 数据库激荡 40 年,深入解析 PostgreSQL、NewSQL 演进历程
  9. 华南地区最大数据中心上线 阿里云河源数据中心正式开服
  10. 如何从零开始设计一颗芯片?