1. 标记-清除算法

先标记出所有需要回收的对象,然后在标记结束后统一回收,只不过存在两个不足

  • 效率不足,标记和清扫效率都不高
  • 空间问题,标记请扫后会产生大量不连续的内存,导致无法找到足够的内存不得不再来一次GC

2. 复制算法

把可用内存分成两块,一块用完了,把这一块内存存活的对象分配到到另外一块,然后清理旧的,代价是内存变为了原来的一半,大多数商业虚拟机采用这种 来回收新生代,因为大部分对象死得快,所以不需要1:1,只要内存分为Eden区和 Survivor区, HotSpot默认 8 : 1,当 Survivor空间不够⽤时,需要依赖其他内存进⾏分配担保。

3. 标记-整理算法

复制算法在对象存活最高的时候,就要复制较多对象,效率就会低,在老年代中一般不使用这种算法。 标记整理算法和标记清除一样标记,接着是将存活对象移动到一端 ,然后清理边界以外的内存

4. 分代收集算法

现在商业虚拟机的垃圾回收一般是这种算法,将对象的存活周期分为几块,一般是分为老年代和新生代,每个年代采用不同的算法。

转载于:https://juejin.im/post/5a31227c51882526151a98d1

JVM笔记 3 3 垃圾回收算法相关推荐

  1. JVM笔记(三):垃圾回收篇

    垃圾回收篇 文章目录 垃圾回收篇 一.垃圾回收算法与引用 1.判断对象已死(标记垃圾算法) `1` 引用计数算法 `2` 可达性分析算法 `3` 真正的死亡 2.垃圾回收算法 `1` 垃圾回收分类 ` ...

  2. 直通BAT必考题系列:JVM的4种垃圾回收算法、垃圾回收机制与总结

    BAT必考JVM系列专题 直通BAT必考题系列:深入详解JVM内存模型与JVM参数详细配置  垃圾回收算法 1.标记清除 标记-清除算法将垃圾回收分为两个阶段:标记阶段和清除阶段. 在标记阶段首先通过 ...

  3. 小师妹学JVM之:GC的垃圾回收算法

    文章目录 简介 对象的生命周期 垃圾回收算法 Mark and sweep Concurrent mark sweep (CMS) Serial garbage collection Parallel ...

  4. JVM内存结构和垃圾回收算法

      jvm的内存结构:按照线程划分可分为两部分,一是线程独占的,二是线程共享的.线程共享的有方法区和堆,线程独占的有程序计数器,本地方法栈,虚拟机栈.方法区是一个模型规范,具体实现的话,是元空间和永久 ...

  5. JVM底层原理+四大垃圾回收算法详解-周阳老师

    转载自,感谢原作者:https://www.jianshu.com/p/9e6841a895b4 注意:垃圾回收算法周阳老师讲的有错误,具体在p19,四大垃圾回收算法为复制算法.标记-整理算法.标记- ...

  6. JVM调优(二)垃圾回收算法

    原文出处: pengjiaheng 可以从不同的的角度去划分垃圾回收算法: 按照基本回收策略分 引用计数(Reference Counting): 比较古老的回收算法.原理是此对象有一个引用,即增加一 ...

  7. JVM的三种垃圾回收算法

    一.什么是垃圾? 在了解垃圾回收机制之前我们首先要定义一下什么是垃圾,我们内存里大部分的对象都是随着方法的执行而创建,方法执行完毕后这些对象就不会被再次使用了,但是这些生成的对象不会被清除掉,所以我们 ...

  8. jvm垃圾回收算法详解

    前言 相比C语言,JVM虚拟机一个优势体现在对对象的垃圾回收上,JVM有一套完整的垃圾回收算法,可以对程序运行时产生的垃圾对象进行及时的回收,以便释放JVM相应区域的内存空间,确保程序稳定高效的运行, ...

  9. JVM学习笔记(二):垃圾回收、垃圾回收算法、垃圾回收器(Serial、Parallel、CMC、G1)、内存分配原则实战

    垃圾回收 一.判断对象是否可以被回收 1.引用计数计数法 内容:在对象中添加一个引用计数器,每当有一个地方引用它,计数器就加一:当引用失效时,计数器就减一:任何时刻计数器为零的对象都是不可能在被使用的 ...

最新文章

  1. GetLastError 函数返回值大全
  2. Druid 连接池 JDBCUtils 工具类的使用
  3. 爬取虎扑NBA首页主干道推荐贴的一只小爬虫,日常爬不冷笑话解闷
  4. Spring Security + Spring Session Redis——【SecurityContext】和【AuthenticationToken】JSON反序列化问题解决方案
  5. TransmittableThreadLocal 解决 线程池线程复用 无法复制 InheritableThreadLocal 的问题.
  6. SAP SD数据库表一览
  7. 安装linux前分区,安装Linux系统前的准备之磁盘分区
  8. css div中文字位置_计算机二级Web(4):CSS基础 (上)
  9. linux 启动网络服务,Linux下网络启动服务器安装和配置方法(pxe+tftp+dhcpd)
  10. 微信小程序-滚动消息通知
  11. Fingersmith---指匠情挑
  12. BZOJ3626 神思路的树链剖分+线段树维护
  13. WPS表格填充技巧大全
  14. 分享磁盘空间不足的5个处理方法
  15. Linux基础操作篇
  16. 真的精采!AI赢了DOTA界的世界冠军 让人兴奋又纠结
  17. 关于“wuauclt.exe”病毒的清理
  18. DB2 windows下9.5安装教程
  19. Python进行Excel数据统计
  20. html如何固定字号,css怎么控制字体大小?

热门文章

  1. 浅析ITIL在银行中的方案
  2. rhcs做HA时的资源释放脚本实现
  3. php里rand()函数怎么用,php中array_rand()函数怎么使用?
  4. c语言中循环结构的作用,C语言循环结构知识点
  5. Kali Linux安装OpenVAS
  6. Xamarin图表开发基础教程(4)OxyPlot框架
  7. Xamarin Essentials教程设备信息DeviceInfo
  8. Xamarin XAML语言教程基本视图ContentViewg构架范围框架
  9. ArduinoYun教程之ArduinoYun硬件介绍
  10. vue 解决跨域 调试_Electron-vue解决跨域