美文网首页
JVM内存结构

JVM内存结构

作者: 币来币往 | 来源:发表于2019-03-01 17:40 被阅读0次

java 虚拟机简称JVM(Java Virtual Mechine),是一个虚构出来的计算机,可以运行class文件。

JVM内存结构

jvm内存包含以下几部分:

  1. 堆内存
    堆内存时jvm中最大的一块内存,所有的对象都是在这里分配。它可以分成新生代和老生代两块。
  • 新生代用来存放新生成的对象;
  • 老生代用来存放没被新生代GC掉的对象或者新生代空间放不下的大对象。
    新生代又可以分为Eden区和两个survivor区。


    image.png
Young Generation        即图中的Eden + From Space + To Space
Eden                    存放新生的对象
Survivor Space          有两个,存放每次垃圾回收后存活的对象
Old Generation          Tenured Generation 即图中的Old Space 
                        主要存放应用程序中生命周期长的存活对象

内存管理:
当用户申请内存空间时,jvm会在新生代的Eden区给对象分配内存,如果空间不够则直接在老生代分配。当Eden区满了或者空间不足时则进行minGC, 将eden区和一个survivor 区的有效对象移动到另外一个suvivor区,然后清空eden和第一个survivor区;继续循环该动作。如果eden清空后仍然不能放下对象,则直接将对象放入老生代。通过几次minor GC之后,还幸存下来的对象,说明不是临时对象,则会被移动到老生代。当老生代也快满的时候则会进行full GC, 来清楚老生代里面的无用对象。

  1. 虚拟机栈(JVM Stack)
    栈内存用来存储局部变量和方法调用,它是线程私有的。
    当有方法调用时,就会为该方法分配一个栈帧压入栈中,当方法结束后弹出。
    栈帧由以下几部分组成:
  • 局部变量区: 用于存储方法的输入参数,局部变量;
  • 操作数栈: 用于计算的区域;
  • 帧数据区: 主要是一些支持常量池解析,正常方法返回以及异常处理等的信息
  1. 方法区
    用于存放class信息,常量和静态变量。
  2. 本地方发栈(Native Method Stack)
    存放Native方法的调用信息
  3. 程序计数器
    当前执行到的代码行号指示器。

堆外内存

JVM也可以操作堆外内存,即内存对象分配在Java虚拟机的堆以外的内存,这些内存直接受操作系统管理,这样做的好处是减少GC对内存的影响,加快复制速度;坏处就是jvm不帮助我们管理这块内存,申请释放需要我们自己管理,如果不注意容易造成内存泄漏。

相关文章

  • JVM内存结构和Java内存模型

    最近看到两个比较容易混淆的概念:JVM内存结构和Java内存模型 JVM内存结构JVM内存结构或者说内存模型指的是...

  • JVM 内存结构解析

    1. JVM内存结构 (1) JDK1.7的JVM内存结构 JVM内存结构主要有三大块:堆内存、方法区和栈。 堆内...

  • JVM学习笔记

    一、JVM的结构图 1.1 Java内存结构 JVM内存结构主要有三大块:堆内存、方法区和栈。堆内存是JVM中最大...

  • JVM-02

    JVM内存结构

  • JVM内存模型和JVM内存结构的区别

    JVM内存模型与内存结构不是同一个概念,JVM内存结构是从运行时数据区的结构角度描述的概念,而JVM内存模型是从主...

  • 《深入理解java虚拟机》之JVM内存结构总结

    JVM内存结构 JVM内存结构不光是只有堆内存和栈内存,实际情况要复杂很多,主要包含以下结构。 程序计数器 每个线...

  • JVM

    简介 Jvm 系列一:Java类的加载机制Jvm系列二:JVM内存结构 --内存泄漏与内存溢出Jvm系列三:GC算...

  • java线程安全相关问题

    可见性问题的原因: 1.JVM内存结构: JVM的内存结构分为主内存(heap)和工作区内存。 主内存可以存放多线...

  • JVM(七):JVM内存结构

    JVM(七):JVM内存结构 在前几节的文章我们多次讲到 Class 对象需要分配入 JVM 内存,并在 JVM ...

  • java内存模型

    java代码是运行在jvm上面的,java的运行时内存结构即是jvm运行时结构。 java内存结构从内存是否共享的...

网友评论

      本文标题:JVM内存结构

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