
垃圾回收与内存泄漏
文章平均质量分 89
在软件开发中,程序员需要关注的一个问题是管理计算机的内存。一个好的内存管理策略可以使程序运行得更加高效,反之,不良的内存管理可能导致资源浪费甚至崩溃。在这个范畴内,两个关键概念就是垃圾回收(Garbage Collection,简称 GC)和内存泄漏(Memory Leak)。
码上生花
强者创造时代,能者顺应时代,弱者繁衍后代。
展开
-
垃圾回收 - 分代垃圾回收
分代垃圾回收在对象中导入了“年龄”的概念,通过优先回收容易成为垃圾的对象,提高垃圾回收的效率。原创 2023-09-08 00:06:54 · 512 阅读 · 0 评论 -
垃圾回收 - 标记压缩算法
标记压缩算法是由标记阶段和压缩阶段构成。首先,这里的标记阶段和标记清除算法时提到的标记阶段完全一样。接下来我们要搜索数次堆来进行压缩。压缩阶段通过数次搜索堆来重新填充活动对象。因压缩而产生的优点我们在介绍复制算法的时候已经说过了。不过他和复制算法不同的是,不用牺牲半个堆。原创 2023-09-06 00:29:22 · 415 阅读 · 0 评论 -
垃圾回收 - 复制算法
GC复制算法是利用From空间进行分配的。当From空间被完全占满时,GC会将活动对象全部复制到To空间。当复制完成后,该算法会把From空间和To空间互换。GC也就结束了。From空间和To空间大小必须一致。这是为了保证能把From空间中所有活动对象都收纳到To空间里。copying(){原创 2023-09-04 23:32:47 · 1269 阅读 · 0 评论 -
垃圾回收 - 引用计数法
GC原本是一种“释放怎么都无法被引用的对象的机制”。那么人们自然而然就会想到,可以让所有对象事先记录下“有多少程序引用了自己”。让各对象知道自己的“人气指数”,从而让没有人气的对象自己消失,这就是引用计数法。原创 2023-09-03 17:37:07 · 357 阅读 · 0 评论 -
垃圾回收 -标记清除算法
就如他的字面意思一样,由标记阶段和清除阶段构成。标记阶段是把所有的活动对象都做上标记的阶段。清除阶段是把那些没有标记的对象,也就是非活动对象回收的阶段。通过这两个阶段,就可以令不能利用的内存空间重新得到利用。原创 2023-09-02 14:49:24 · 557 阅读 · 0 评论