美文网首页Java
JVM虚拟机内存模型

JVM虚拟机内存模型

作者: TZX_0710 | 来源:发表于2020-04-10 15:52 被阅读0次
Java8和Java8之前对比

本文主要根据JDK1.8讲解JVM虚拟机


JVM运行时内存区域

从上图我们可以看到JVM在运行时的

一、JVM虚拟机数据区域分为

1器 2栈 1堆

  1. 器(程序计数器 线程数据共享)

每个线程一块、指向线程执行的当前行号,如果方法为Native方法,那么其值为null

  1. 本地方法栈( 线程数据共享)

本地方法栈存放的是虚拟机使用到的Native方法

  1. java虚拟机栈(线程数据共享)

存放一些常用变量的常量、以及存放一些方法。
线程私有每个线程对应一个Java虚拟机栈,其生命周期与线程同步。每个Java方法在被调用的时候都会创建一个栈桢,并入栈。一旦完成调用,则出栈,线程也就结束完成了任务。

堆是用占用内存最大的一块区域,用于存放对象的示例,几乎所有对象和数组都在堆上进行分配,JDK1.7之后字符串常量从永久代中剥离出来,存放在堆中。

二、堆内存分配

堆内存分配

从上图我们可以看出 堆内存分为 年轻代、老年代、直接内存 年轻代占用堆内存3分之1 、老年代占用堆内存3分之2

  1. 年轻代(1/3)
    年轻代里面又细分 Eden(中心体)占用年轻代的10分之8的空间。余下的10分之2是幸存空间。幸存空间存在的意义是为了减少被送到老年代的对象,减少Full Gc的发生。
  2. 老年代空间(2/3)
    在年轻代经历了16次MinorGC回收、依旧保留的或者的对象。老年代采用MajorGC或者FullGC。

相关文章

网友评论

    本文标题:JVM虚拟机内存模型

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