美文网首页
java 浅析 GC 、堆的分布

java 浅析 GC 、堆的分布

作者: 杭州_mina | 来源:发表于2017-06-08 22:39 被阅读0次

1. 堆的分布

  • 1.1 堆的分布图


    image.png
1. java堆被划分成不同的区域:新生代 ( Young )、老年代 ( Old )
2. 新生代 ( Young ) 又被划分为三个区域:Eden、From Survivor、To Survivor。 
3. 新生代占整个堆的1/3、Eden占新生代的1/8、from和to的大小一致各占新生代1/10、老年代占2/3 
4.from区和to去的大小空间是一样的,为什么呢?因为YGC 采用复制算法

2. GC的算法

  • 2.1 标记-清除
    标记-清除算法将垃圾回收分为两个阶段:标记阶段和清除阶段。一种可行的实现是,在标记阶段,首先通过根节点,标记所有从根节点开始的可达对象。因此,未被标记的对象就是未被引用的垃圾对象;然后,在清除阶段,清除所有未被标记的对象。


    image.png
    • 2.1.1 标记-清除算法的缺点:
1.它的缺点就是效率比较低(递归与全堆对象遍历),导致stop the world的时间比较长
2.这种方式清理出来的空闲内存是不连续的
  • 2.2 标记压缩
    标记-压缩算法适合用于存活对象较多的场合,如老年代。它在标记-清除算法的基础上做了一些优化。和标记-清除算法一样,标记-压缩算法也首先需要从根节点开始,对所有可达对象做一次标记;但之后,它并不简单的清理未标记的对象,而是将所有的存活对象压缩到内存的一端;之后,清理边界外所有的空间。


    image.png
    • 2.2.1 标记-压缩算法的缺点:
1.如果在对象存活率较高时就要进行较多的复制操作,效率将会变低。
2.更关键的是,如果不想浪费50%的空间,就需要有额外的空间进行分配担保,以应对被使用的内存中所有对象都100%存活的极端情况,所以在老年代一般不能直接选中这种算法。
  • 2.3 复制算法
    与标记-清除算法相比,复制算法是一种相对高效的回收方法
    不适用于存活对象较多的场合,如老年代(复制算法适合做新生代的GC)
    将原有的内存空间分为两块,每次只使用其中一块,在垃圾回收时,将正在使用的内存中的存活对象复制到未使用的内存块中,之后,清除正在使用的内存块中的所有对象,交换两个内存的角色,完成垃圾回收。


    image.png
    • 2.3.1 复制算法的缺点:
1.复制算法的最大的问题是:空间的浪费

3. GC的触发

image.png

相关文章

  • java 浅析 GC 、堆的分布

    1. 堆的分布 1.1 堆的分布图image.png 2. GC的算法 2.1 标记-清除标记-清除算法将垃圾回收...

  • Java常见问题分析(内存溢出、内存泄露、线程阻塞等)

    Java垃圾回收机制(GC) 1.1GC机制作用 1.2堆内存3代分布(年轻代、老年代、持久代) 1.3GC分类 ...

  • jvm垃圾清理机制

    更多参考GC及JVM参数浅析JAVA的垃圾回收机制(GC)JVM系列三:JVM参数设置、分析jvm系列 (二) -...

  • JVM GC分析

    GC简介 GC(垃圾回收)是针对Java堆内存,Java堆是被所有线程共享的一块内存区域,所有对象实例和数组都在堆...

  • 运维必会JVM知识

    Java的GC机制 回收的对象:不存在任何引用的对象 堆区(Heap) 堆区是GC最频繁的,也是理解GC机制最重要...

  • 垃圾收集器与内存分配策略 -- 内存分配与回收策略

    Java堆的结构分布如下图所示 新生代与老年代GC回收如图所示 新生代 新生代主要用来存放新生的对象,一般占据堆1...

  • JVM基础知识

    本文参考链接 运行时数据区 堆:存放java对象实例,GC回收的地方,也称GC堆 方法区:堆的逻辑部分,存放静态变...

  • JVM 系列 - 内存区域 - Java 堆(五)

    特点 Java 堆(Java Heap)是 Java 虚拟机所管理的内存中最大的一块,也被称为 “GC堆”,是被所...

  • GC算法与种类

    GC Garbage Collection垃圾收集 Java中,GC的对象是堆空间和永久区(防止人为引入的内存泄漏...

  • JVM垃圾回收

    参考资料:[1]. 浅析JAVA的垃圾回收机制(GC)[2]. JVM 七种垃圾回收器[3]. JVM(六)为什么...

网友评论

      本文标题:java 浅析 GC 、堆的分布

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