美文网首页
JAVA内存模型 (三) 堆

JAVA内存模型 (三) 堆

作者: Minstrel_a7ca | 来源:发表于2018-07-13 18:34 被阅读0次

堆中分为两个区域,新生代,老年代。


heap.png

为什么会这样分?

从JVM功能考虑,并不需要这样划分。新生代存在的唯一理由是优化GC的性能
具体优点:
1.简化新对象分配(大部分对象在young分配)
2.young和old使用不同的GC算法。

重要支持

经过广泛研究,发现对象有以下特点:
1.很多对象生存时间都很短
2.新对象很少引用存活时间长的对象

Young

新生代分为三个区域
相对较大的Eden,大小相等的From Survivor和To Survivor。


young.png

Young规定

1.新对象会首先分配到Eden(过大会直接分配到Old)
2.GC中,Eden中对象会移动到Survivor,直到对象满足一定年龄(熬过GC一定次数),会被移动到Old。

Young GC

基于新对象生存时间短的特点,移动对象使用的是复制算法。
1.GC前,To Survivor保持清空,对象保存在Eden和From Survivor。
2.GC过程
Eden中的幸存对象复制到To Survivor。
From Survivor的幸存对象,会考虑对象年龄,1.没有达到阈值,复制到To Survivor。2.达到阈值,复制到Old。


YoungGC.png

3.GC完成后,Eden和From中没有幸存对象,可视为清空状态。
最后From Survivor和To Survivor调换名字,以便下次GC。

相关文章

  • java内存模型(堆,栈)

    1.Java内存模型(堆,栈)a) Java内存模型Java虚拟机将其管辖的内存大致分三个逻辑部分:方法区(Met...

  • java基础知识

    java 内存区域、JMM、JAVA线程模型、硬件内存模型 java内存区域分为共享区域(堆、方法区常量池)、私有...

  • JAVA内存模型 (三) 堆

    堆中分为两个区域,新生代,老年代。 为什么会这样分? 从JVM功能考虑,并不需要这样划分。新生代存在的唯一理由是优...

  • JVM第二天-volatile final synchroniz

    1.JAVA内存模型 简单的讲,Java 内存模型将内存分为共享内存和本地内存。共享内存又称为堆内存,指的就是线程...

  • Java面试必备——JVM篇

    1. Java的内存模型以及GC算法 一、Java内存模型 Java 虚拟机具有一个堆,堆是运行时数据区域,所有类...

  • 我所知道的-Java垃圾回收机制

    本文章你能知道的内容: Java内存模型 Java堆 对象什么时候回收 垃圾回收算法 垃圾回收器 Java内存模型...

  • Java工程师成神之路

    一、基础篇 1.1 JVM 1.1.1. Java内存模型,Java内存管理,Java堆和栈,垃圾回收 http:...

  • Java工程师成神之路

    一、基础篇 1.1 JVM 1.1.1. Java内存模型,Java内存管理,Java堆和栈,垃圾回收 http:...

  • 牛人

    一、基础篇 1.1 JVM 1.1.1. Java内存模型,Java内存管理,Java堆和栈,垃圾回收 http:...

  • Java学习之路

    一、基础篇 1.1 JVM 1.1.1. Java内存模型,Java内存管理,Java堆和栈,垃圾回收 http:...

网友评论

      本文标题:JAVA内存模型 (三) 堆

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