主要讨论集中垃圾收集算法的思想及发展过程。

1、标记-清除法

  最基础的收集算法是标记-清除法,算法分为标记清除两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收所有被标记的对象,其标记过程在之前已经讲过。之所以说他是最基础的收集算法,是因为后续的收集算法都是基于这种思路并对其不足进行改进而得到的。

  它的不足有两个:一个是效率问题,标记和清除效率都不高;另一个是空间问题,标记清除后产生大量不连续的内存碎片,但后续程序需要分配较大对象时,因无法找到足够连续内存不得不提前触发另一次垃圾收集动作。执行过程图见《深入理解Java虚拟机》P69。

2、复制算法

  该算法将可用内存按照容量分为大小相等的两块,每次只是用其中的一块,但这一块内存用完了,就将还存活着的对象复制到了另一块上面,然后再把使用过的内存空间一次清理掉。这样每次对一半的内存空间进行内存回收,内存分配时也就不需要在考虑内存碎片等情况,解决了效率问题。但这种算法的代价是将内存缩小为原来的一半,未免太高了一点。执行过程图见《深入理解Java虚拟机》P70。

最新文章

  1. Oracle体系结构总结
  2. JSLint检测Javascript语法规范
  3. c++11 function bind 测试。
  4. java中的hashcode和euqals的区别和联系
  5. 【获取图像处理源码以及编译过程】在window下make。
  6. Red Hat Enterprise Linux 6安装步骤
  7. [RxJS] Reactive Programming - Rendering on the DOM with RxJS
  8. 谷歌page speed 安装使用及页面问题详解
  9. SPOJ PGCD(莫比乌斯反演)
  10. 关于struts2中的default-action-ref
  11. js实现轮播图效果(附源码)--原生js的应用
  12. scrapy crawl xmlfeed spider
  13. 区分IE8 、IE9 、IE10的专属css hack
  14. RabbitMQ的一些有用教程
  15. solr索引报错(java.lang.OutOfMemoryError:GC overhead limit exceeded)
  16. elasticsearch搜索框架的安装相关
  17. 【BZOJ1999】【NOIP2007】树网的核 单调队列优化DP
  18. Confluence 6 通过 SSL 或 HTTPS 运行 - 确定你的证书路径
  19. ProtoBuf 常用序列化/反序列化API 转
  20. npm下载缓慢解决方法

热门文章

  1. Making the Grade (bzoj1592)题解
  2. Appium+python自动化(二十)- 猴哥失散多年的混血弟弟还是妹妹- Monkey(猴子)日志(超详解)
  3. android_sdcard读写(一)
  4. ServiceFabric极简文档-1.1 附属文件:规划和准备 Service Fabric 独立群集部署
  5. 【Netty】Netty简介及服务器客户端简单开发流程
  6. 【机器学习理论】换底公式--以e,2,10为底的对数关系转化
  7. VBox on 14.04: Kernel driver not installed (rc=-1908) [duplicate]
  8. tablayout_不能左右滑动问题小计
  9. [LeetCode] 107 Binary Tree Level Order Traversal II (easy)
  10. 在vue中创建自定义指令