2019独角兽企业重金招聘Python工程师标准>>>

1,标记-清除算法

概念:首先标记出所有需要回收的对象,在标记完成后统一回收所有标记的对象。
特点:1)效率问题:标记和清除的效率都不高。2)空间问题:标记清除之后会产生大量不连续的内存碎片,碎片太多可能会导致以后需要分配较大的对象时,因无法找到足够大的连续内存而不得不提前触发另一次垃圾收集的动作。

2,复制算法

概念:将可用的内存分为(容量)大小相等的两块,每次只使用其中的一块。当这一块的内存用完后,就将还存活的对象复制到另一块上面,然后再把已使用过的内存块一次性清理掉。
特点:1)效率:实现简单,运行效率高2)空间问题:将内存的大小缩小为原来的一半
应用:新生代的回收提醒:1)新生代中大部分的对象时“朝生夕死”的,所有并不需要安装1:1的比例来划分内存空间。2)虚拟机将新生代内存分为一块较大的Eden空间和两块较小的Survivor空间(Survivor to和Survivor from),每次使用Eden空间和其中一块Survivor空间。过程:1)每次创建对象时,首先会在Eden中分配,若Eden已满,则在Survior from中分配,如果Eden和Survior from都无法容纳这个对象,则JVM会进行一次GC;2)GC时,将Eden和Survivor from中还存活的对象一次性地复制到另外一块Survivor to空间上,最后清理掉Eden和Survivor form空间;3)当Survivor to空间不够用时,需要依赖老年代进行分配担保。例如:HotSpot虚拟机默认Eden和两个Survivor的大小比例是8:1:1,也就是每次新生代中可用内存的空间为整个新生代容量的90%,只有10%的内存会被浪费掉。内存分配担保机制:在新生代GC(Minor GC)前,虚拟机会先检查老年代中可用的最大连续空间是否大于新生代所有对象的总空间1)如果满足条件,那么新生代GC就可以确保是安全的2)如果不满足条件,则虚拟机会查看HandlePromotionFailure设置是否允许担保失败。如果允许担保失败,那么会继续检查老年代中可用的最大连续空间是否大于历次晋升到老年代的对象的平均大小,如果大于,将会进行一次新生代GC,尽管这次新生代GC是有风险的如果小于,那么这时不会进行新生代GC,而是改为进行一次老年代GC(Full GC)如果不允许担保失败,那么这时不会进行新生代GC,而是改为进行一次老年代GC(Full GC)

3,标记-整理算法

概念:概念:首先标记出所有需要回收的对象,在标记完成后让所有存活的对象都向一端移动,然后直接清理掉没有存活对象的另一端。

4,分代收集算法

Java堆分为新生代和老年代,在新生代中采用 复制算法 回收,在老年代中使用 标记-清理 或 标记-整理 算法来回收

转载于:https://my.oschina.net/u/1399755/blog/1542327

JVM中的垃圾收集算法相关推荐

  1. JVM中的垃圾收集算法和Heap分区简记

    如何判断垃圾对象? 垃圾收集的第一步就是先需要算法来标记哪些是垃圾,然后再对垃圾进行处理. 引用计数(ReferenceCounting)算法 这种方法比较简单直观,FlashPlayer/Pytho ...

  2. 聊聊JVM中那些垃圾收集器

    垃圾收集算法是内存回收的方法论,垃圾收集器是内存回收的具体实现.Java虚拟机规范中对垃圾收集器应该如何事先并没有任何规定,故而不同厂商.不同版本的虚拟机所提供的垃圾收集器可能会有很大差别.本文分享的 ...

  3. jvm相关,垃圾收集算法,垃圾收集器,jvm调优--学习笔记

    对内存合理分配,优化jvm 参数,就是为了尽可能减少新生代(Minor GC),或者是整个老年代(Major GC) ,或者是整个 Java 堆 (Full GC) ,尽量减少 GC 带来的系统停顿, ...

  4. JVM中的垃圾收集器

    2019独角兽企业重金招聘Python工程师标准>>> Serial收集器: 一种新生代的单线程收集器,采用复制算法回收.当它进行垃圾收集时,其他用户的所有线程都将暂停. Seria ...

  5. jvm中的垃圾收集器serial、parNew、parallel Scavenge;serial old、parallel old、CMS、G1

    test 转载于:https://www.cnblogs.com/wangjing666/p/11394117.html

  6. 《给产品经理讲JVM》:垃圾收集器

    前言 在上篇中,我们把 JVM 中的垃圾收集算法有了一个大概的了解,又是一个阴雨连绵的周末,宅在家里的我们又开始了新一轮的学习: 产品大大:上周末我们说了垃圾收集算法,下面是不是要讲一下这些算法的应用 ...

  7. 深入理解java虚拟机之——垃圾回收(垃圾判断,垃圾收集算法,垃圾收集器)

    java与C++之间有一道动态内存分配和垃圾收集的"墙",墙里面的人想出来,墙外边的人想进去,或许只有骑在墙上才能清楚的了解,墙内墙外都是牢笼. 上面一句出自<深入理解jav ...

  8. Hotspot虚拟机- 垃圾收集算法和垃圾收集器

    引言 声明:由于CSDN不支持Hexo支持的Markdown语法,大家看到{% asset_img 1st.png Mark and Sweep %}这样的标签时,就是一张图片.由于图片较多,我就不一 ...

  9. JVM中GC原理解析

    一.在理解GC之前,先了解下JVM体系结构 1.1什么是GC GC可以理解为在追踪仍然使用的所有对象,并将其余对象标记为垃圾然后进行回收,这样的一个过程称之为GC,所有的GC系统可以从如下几个方面进行 ...

最新文章

  1. 基础004:R语言数据处理和变换——dplyr
  2. redis cluster 集群重新启动关闭
  3. Android控件随手指的移动而移动
  4. c# mvvm模式获取当前窗口_对Vue中的MVVM原理解析和实现
  5. 使用echarts(三)自定义图表仪表盘
  6. 知乎在线部分的技术架构
  7. java运行时数据区(pc寄存器、虚拟机栈(栈帧)、本地方法栈、java堆、方法区、运行时常量池、直接内存)
  8. 【华为云技术分享】“技术-经济范式”视角下的开源软件演进剖析-part 2
  9. 中国数字音乐——版权问题之公司分析
  10. 迅雷服务器IP地址列表的获取办法
  11. 英语发音规则---字母组合oo的发音规律
  12. java非主流火星文输入法_我爱火星文_火星文输入法
  13. 【程序】Marvell 88W8801 WiFi模块连接路由器,并使用lwip2.0.3建立http服务器(20180807版)
  14. IPX:互联网分组交换协议--网络大典
  15. nite2.2下载_2nite的完整形式是什么?
  16. Hibernate中hibernate.cfg.xml核心配置文件配置
  17. stm32f103can总线过滤器配置
  18. python open cv 图片对比_用几十万张图片来拼图!Open CV牛逼不是没有道理的!马赛克拼图...
  19. 配置自己的maven库——nexus
  20. 人教版初中英语听力软件,人教版初中英语听力mp3

热门文章

  1. mrsql查询第二高的成绩_及锋而试 锻铁成钢——高二年级部召开第二次考试成绩分析会...
  2. 在线文档有哪些技术难点
  3. php图片滑动代码,基于mootools 1.3框架下的图片滑动效果代码_Mootools
  4. npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! node-sass@
  5. Webpack執行打包:“You may need an appropriate loader to handle this file type“
  6. c语言基础知识 面试,c语言面试最必考的十道试题,求职必看!!!
  7. java常量池的理解_Java常量池的大概理解
  8. java lambda教程_Lambda系列教材 (一)- Java Lambda 表达式教程
  9. Linux 编辑doc,Linux命令大全(文档编辑).doc
  10. java eventbus 原理_事件总线,事件驱动(RxJava,EventBus)与广播(BroadcastReceiver)(2)