Java的垃圾回收算法

本文是《Thinking In Java 4TH》第五章的读书笔记,介绍了Java的垃圾回收机制,包括引用计数法、stop-and-copy、mark-and-sweep以及Adaptive generational stop-and-copy mark-and-sweep四种算法。讲解了每种算法的工作原理、优缺点,以及如何通过自适应调整提高性能。此外,还提及了JIT编译对JVM性能的影响。
摘要由CSDN通过智能技术生成

这是篇读书笔记,来自《Thinking In Java 4TH》第五章“Initialization & Cleanup”的“How a garbage collector works”这一小节(具体详见P178),为了给自己加深印象,做个笔记。由于这本书是2007出版的,所以这里的垃圾回收算法主要是学习参考用,不是对当前最新JVM的GC学习。

我们很容易认为Java在堆上为所有对象分配空间是一件成本很高的事情。然而,GC在增加对象创建速度上有着重要影响,JVM的回收机制让堆对象的创建和其他语言在栈上创建对象差不多一样快。Java的Heap像传送带,每次分配一个新对象,“传送带”就往前移动,这意味着对象空间的分配能快速标记,每次堆的指针只是简单的向前移动。如果仅仅是“传送带”,创建大量对象时就会出OOM(out of memory),其中机制就是garbage collector,GC会收集heap的垃圾并使堆中的所有对象紧凑,所以你能有效的移动“heap pointer”,保持堆指针尽可能地离“传送带”的头部近。这让堆空间的快速分配成为可能,同时让用户看起来堆空间是无限的。为了更好地理解java,了解GC的机制是很有帮助的。

一.reference counting--引用计数法

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值