JVM的逻辑内存模型图

[逻辑内存模型图]

-----

JVM内部分区

其实JVM内部不仅仅只有栈和堆 
包括 程序计数器 、 Java 虚拟机栈 、本地方法栈、Java 堆、方法区等

1. 程序计数器

线程私有,较小的内存空间,如果线程正在执行的是一个Java 方法,这个计数器记录的是正在执行的虚拟机字节

码指令的地址;如果正在执行的是Natvie 方法,这个计数器值则为空(Undefined)。此

内存区域是唯一一个在Java 虚拟机规范中没有规定任何OutOfMemoryError 情况的区域。

2. Java 虚拟机栈(栈区) 
线程私有,每个方法被执行的时候都会同时创建一个栈帧用于存储局部变量表、操作栈、动态

链接、方法出口等信息。每一个方法被调用直至执行完成的过程,就对应着一个栈帧在

虚拟机栈中从入栈到出栈的过程。

3.本地方法栈 
与虚拟机栈所发挥的作用是非常相似的,区别不过是虚拟机栈为虚拟机执行Java 方法(也就是字节码)服务,
而本地方法栈则是为虚拟机使用到的Native 方法服务,有的虚拟机(譬如Sun HotSpot 虚拟机)直接就把本地方法栈和虚拟机栈合二为一。
与虚拟机栈一样,本地方法栈区域也会抛出StackOverflowError 和OutOfMemoryError

4.Java 堆(堆区) 
线程共享,此内存区域的唯一目的就是创建并存放对象实例,也是GC区。分代收集算法:内存区大概分为新生代,老年代,永久代。
新生代从Eden区创建,复制到Survivor区(2个 from 和 to)。 GC分为minor GC 和 Full GC ,
minor GC: Eden满了就触发minor GC,minorGC会将Eden区仍然存活的会复制到ToSurvivor
,FromSurvivor一部分复制到老年代,一部分复制到ToSurvivor,此时原Eden和From的数据清空,from和to互换,这样的过程直到To被填满,复制到老年代。
FullGC:(1)年老代内存不足;(2)持久代内存不足;(3)统计得到的Minor GC晋升到旧生代的平均大小大于旧生代的剩余空间(4)调用System.gc()方法的时候,

5. 方法区(类级/静态) 
线程共享,存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。
虽然Java 虚拟机规范把方法区描述为堆的一个逻辑部分,但是它别名叫做Non-Heap(非堆)
即“永久代”,不进行GC,只是针对常量池的回收和对类型的卸载 
运行时常量池:是方法区的一部分,Class常量池存放编译期生成的各种字面量和符号引用,
运行时常量池相对于Class 文件常量池的另外一个重要特征是具备动态性,运行期间也可能将新的常量放入池中,这种特性被开发
人员利用得比较多的便是String 类的intern() 方法(这个方法会首先检查字符串池中是否有”ab”这个字符串,如果存在则返回这个字符串的引用,
否则就将这个字符串添加到字符串常量池中,然会返回这个字符串的引用,这可以实现字符串的"= ="比较。new String 不进入常量池,直接赋值会进入常量池)。

转载于:https://www.cnblogs.com/liumz0323/p/10301332.html

JVM(一) ---JVM的数据模型相关推荐

  1. JVM之JVM内存区域与内存分配(转载)

    2019独角兽企业重金招聘Python工程师标准>>> 先来看看JVM运行时候的内存区域 大多数 JVM 将内存区域划分为 Method Area(Non-Heap)(方法区),He ...

  2. 小师妹学JVM之:JVM的架构和执行过程

    文章目录 简介 JVM是一种标准 java程序的执行顺序 JVM的架构 类加载系统 运行时数据区域 执行引擎 总结 简介 JVM也叫Java Virtual Machine,它是java程序运行的基础 ...

  3. JVM笔记(JVM内存+垃圾回收器)详解

    一:java代码的执行流程(引出JVM) 首先由程序员编写成.java文件 然后由javac(java编辑器)将.java文件编译成.class文件 .class文件可以在不同平台/操作系统上的JVM ...

  4. 深入理解JVM之JVM内存区域与内存分配

    在学习jvm的内存分配的时候,看到的这篇博客,该博客对jvm的内存分配总结的很好,同时也利用jvm的内存模型解释了java程序中有关参数传递的问题. 博客出处: http://www.cnblogs. ...

  5. 【JVM】JVM系列

    [JVM]JVM系列 [JVM]Java虚拟机简介 [JVM]JVM类加载机制 [JVM]JVM内存区域 [JVM]JVM垃圾回收机制 [JVM]JVM执行引擎 [JVM]JVM沙箱机制 [JVM]G ...

  6. 【JVM】JVM内存模型(详细)

    目录 一.JVM概述 1.jvm简介 2.jvm作用 3.jvm的内存模型 二.类加载器 1.类加载器的作用 2.加载器的类型 3.双亲委派机制的运行过程 4.双亲委派机制优缺点 5.为什么要破坏双亲 ...

  7. JVM(七) - Jvm内存模型

    一.Jvm介绍 1.JVM内存模型图: JVM = 类加载器(classloader) + 运行时数据区域(runtime data area) + 执行引擎(execution engine) 类加 ...

  8. JVM系列:jvm基本结构

    http://mp.weixin.qq.com/s/ReM763jIyPs2P0RuhWNeNQ 知识点1:什么是Java虚拟机(你以为你知道,如果你看我下面的例子,你会发现你其实不知道) 第一步:先 ...

  9. JVM - 认识JVM规范

    目录 重识JVM JVM规范作用及其核心 JVM 整体组成 理解ClassFile结构 ASM开发 重识JVM JVM概述 JVM: Java Virtual Machine,也就是Java虚拟机 所 ...

  10. 一篇文章掌握整个JVM,JVM超详细解析!!!

    JVM 先想想一些问题 1 我们开发人员编写的Java代码是怎么让电脑认识的 2 为什么说java是跨平台语言 3 Jdk和Jre和JVM的区别 4 为什么要学习JVM 深入学习JVM 1 JVM运行 ...

最新文章

  1. matlab中给图像加几个矩形框_在图像中画矩形框(matlab)
  2. 汇编 无条件转移和过程调用指令
  3. 魅族android6.0,【魅族魅蓝5s评测】迷人Flyme 安卓6.0提升流畅度_手机评测-中关村在线...
  4. django model 数据类型
  5. 架构师之路(5)---IoC框架
  6. 2020年学习编程最好的10个网站,绝对不可错过!!
  7. python 函数中的面试题
  8. 投资一个五星级酒店需要多钱?多长时间能回本?
  9. 05 吸收应用-会整理还不够?教你吸收、联想、输出、应用
  10. vue中将汉字按照首字母排序,也适用于其他地方,但不适用多音字
  11. Codeforces Round #354 (Div. 2) A. Nicholas and Permutation
  12. 树莓派从零开始学习记录
  13. 矩阵乘法 算法训练 试题_计算方法练习题及答案汇总(共八套).docx
  14. 【机器学习实战系列】读书笔记之AdaBoost算法公式推导和例子讲解(一)
  15. web前端总结之文本超出显示省略号
  16. [MAC]Google Drive下载大文件
  17. java 构造方法 继承_java-继承/构造方法?
  18. 避坑外连腾讯云服务器redis 6379
  19. excel中数字如何自动换行
  20. 宜明昂科在港交所递表:2021年亏损翻倍,过往融资额存在夸大情形

热门文章

  1. mongodb模糊查询包含特殊字符
  2. C++ 函数--幽径初探索
  3. poj1018 Communication System (有道翻译完全拯救不了)
  4. mutation annovar
  5. IE下a标签会触发window.onbeforeunload的问题
  6. JS中try....catch
  7. Arnold+Shave 渲染毛发
  8. ScriptManager 帮助您实现 Web 应用程序的 AJAX 功能
  9. 线段树、二叉堆以及离散化入门
  10. Wannafly 挑战赛16 A 取石子