java虚拟机在执行java程序的过程中会把它所管理的内存划分为若干个不同的内存区域,如下图所示

  • 程序计数器(Program Counter Register):是一块较小的内存空间,他可以看做是当前线程所执行的字节码的行号指示器。在虚拟机的概念模型里,字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖计数器完成。
  • 虚拟机栈(Java Virtual Machine Stacks):描述的是java方法执行的内存模型:每个方法在执行的同时都会创建一个栈帧(Stack Frame),用于存储 局部变量、操作数栈、动态链接、方法出口等信息。每一个方法从调用到执行完成的过程,就对应着一个栈帧在虚拟机栈中入栈到出栈的过程。虚拟机栈也是线程私有的,生命周期于线程相同。
  • 本地方法栈(Method Native Stack):与虚拟机栈的作用非常相似,区别是虚拟机栈为虚拟机执行java方法服务,而本地方法栈则为虚拟机使用到的Native方法服务。
  • 堆(Java Heap):此内存区域的唯一作用就是用来存放对象实例,几乎所有的对象实例都在这里分配内存。堆是java虚拟机管理的内存中最大的一块,被所有线程共享。由于堆是垃圾收集器管理的主要区域,所以也被称为GC堆。由于现代收集器基本都采用分代收集算法,所以java堆中还可以细分为新生代,老年代。新生代又细分为Edan区、From Survivor区(S0)、To Survivor区(S1)。
  • 元空间(Metaspace):存储已被虚拟机加载的类信息。随着JDK8的到来,JVM不再有方法区(PermGen),原方法区存储的信息被分成两部分:1、虚拟机加载的类信息,2、运行时常量池。分别被移动到了元空间和堆中。

jvm内存模型(jdk1.8)相关推荐

  1. 深入理解Java虚拟机:jvm内存模型jdk1.8

    深入理解Java虚拟机:jvm内存模型jdk1.8 一.程序计数器 使用PC寄存器存储字节码指令地址有什么作用?为什么使PC寄存器记录当前线程的执行地址? PC寄存器为什么会被设定为线程私有? 二.J ...

  2. JVM虚拟机学习 - JVM类加载,JVM内存模型,JVM性能分析工具

    JVM虚拟机 二 JVM类加载 类的生命周期 加载: ​ 加载class文件到二进制字节流,然后再将二进制字节流转化为方法区的运行时数据结构,生成一个对应的Class对象作为类各种数据的访问入口. 链 ...

  3. JDK1.8 JVM内存模型

    一.JDK1.8 JVM内存模型概览 这里介绍的是JDK1.8 JVM内存模型.1.8同1.7比,最大的差别就是:元数据区取代了永久代.元空间的本质和永久代类似,都是对JVM规范中方法区的实现.不过元 ...

  4. JVM内存模型及垃圾收集策略解析(一)

    http://www.cnblogs.com/laoyangHJ/archive/2011/08/17/jvm_model.html JVM内存模型是Java的核心技术之一,之前51CTO曾为大家介绍 ...

  5. JVM—内存模型JMM

    原文作者:qzqanlhy1314 原文地址:jvm 内存模型 目录 一.jvm 内存模型划分 二.虚拟机栈 三.堆 四.元数据区域 五.直接内存 一.jvm 内存模型划分 根据JVM规范,JVM 内 ...

  6. 《深入理解Java虚拟机》读后总结(一)JVM内存模型

    基于Sun HotSpot JVM 直接上图: 从图中看到,JVM内存分为两个主要区域,一个是所有线程共享的数据区,一个是线程隔离数据区(线程私有) 线程隔离数据区 程序计数器(Program Cou ...

  7. 深入详解JVM内存模型与JVM参数详细配置

    本系列会持续更新. JVM基本是BAT面试必考的内容,今天我们先从JVM内存模型开启详解整个JVM系列,希望看完整个系列后,可以轻松通过BAT关于JVM的考核. BAT必考JVM系列专题 1.JVM内 ...

  8. 直通BAT必考题系列:深入详解JVM内存模型与JVM参数详细配置

    JVM基本是BAT面试必考的内容,今天我们先从JVM内存模型开启详解整个JVM系列,希望看完整个系列后,可以轻松通过BAT关于JVM的考核. BAT必考JVM系列专题 1.JVM内存模型 2.JVM垃 ...

  9. JVM内存模型与GC回收器

    1.JVM内存模型 JVM内存模型如上图,需要声明一点,这是<Java虚拟机规范(Java SE 7版)>规定的内容,实际区域由各JVM自己实现,所以可能略有不同.以下对各区域进行简短说明 ...

  10. JVM内存模型和类加载运行机制

    JVM内存模型和类加载运行机制 JVM内存模型 运行一个 Java 应用程序,必须要先安装 JDK 或者 JRE 包.因为 Java 应用在编译后会变成字节码,通过字节码运行在 JVM 中,而 JVM ...

最新文章

  1. 虚拟机VMware下CentOS6.6安装教程图文详解
  2. python【蓝桥杯vip练习题库】BASIC-14 时间转换(取余 水题)
  3. Storm的本地运行模式示例
  4. Altium Designer 20,新功能有哪些?
  5. 锐捷多网卡解决方案 与当前环境冲突(Code 2)
  6. oracle分区存储过程示例,Oracle 存储过程示例
  7. 快速正确的修改变量的命名和如何正确规范的注释
  8. Windows Print Spooler 被曝未修复 0day,可导致恶意软件以管理员权限运行
  9. 《TCP/IP路由技术(第二卷)》一1.6 附 注
  10. AD库:如何从立创商城得到自己想要的库
  11. python字典实例简单代码_python编程入门九:字典实例代码
  12. android 发布最新系统更新包,安卓升级包(安卓补丁包更新)
  13. C语言 输出数组中的全部元素的三种方法
  14. php运行日志在哪里看,thinkphp错误日志在哪
  15. JavaWeb——什么是Session及Session的用法
  16. tube和pipe的区别
  17. Ffmpeg实例,为视频添加一个循环播放的背景音乐(混声)
  18. 小米、华为、一加、OPPO接连入场,电视的魅力在哪里?
  19. 海康威视SDK控制台程序consoleDemo获取视频通道参数
  20. 新生儿取名:撩人于无形的女宝宝名字,任你挑选

热门文章

  1. 谈谈EOS的出块时间,不可逆时间,BFT
  2. 古代的人才选拔,哪种制度更好?
  3. 如何更改Win8,8.1中文版到英文版,亲测!
  4. GPS定位中的误差源
  5. 如何基于TAPD实践Scrum的敏捷开发?
  6. 便捷式计算机无线功能按钮,便携式wifi热点怎么用 便携式WI-FI热点使用步骤【详解】...
  7. day2 craps赌博游戏
  8. tcp wireshark 过滤syn_抓包工具Wireshark常用过滤使用方法
  9. 直播技术——流媒体协议
  10. 项目选题报告答辩总结——日不落战队