GC是垃圾回收(Garbage Collection)的缩写
gc垃圾回收的定义:
垃圾的定义:
在GC中垃圾指的是那些不再被程序所使用的内存对象,这些对象不再被访问,也不再对程序的正确性产生任何影响,GC的任务是找到这些垃圾对象,并释放他们所占用的内存空间,以便程序使用这些内存空间。
垃圾的检测:
GC通过不同的算法来检测垃圾对象,其中常用的是计数算法和标记清除算法,引用计数算法会维护每个对象的引用计数,当某个对象的引用计数为0时,就可以视为垃圾并回收。
标记清除算法则会从程序的根对象出发,标记所有可以访问到的对象,然后清除未被标记的对象。
垃圾的回收:GC通过通过不同的方式来回收垃圾对象
其中最常用的是标记清除算法和复制算法
标记清除算法:
会标记所有可以访问到的对象,然后清除未被标记的对象
复制算法:
则会将内存空间分为两部分,每次只是用其中的一部分,当一部分被使用完后,将其中的存活对象复制到另一部分空间中,然后清除原空间的所有对象
GC的代价:
为了提高GC的效率,一些gc会将内存分为不同的代,每个代中对象具有不同的生命周期,通常会将新分配的对象放到新生代中,新生代使用复制算法进行垃圾回收,老年代中的对象则使用标记清除算法进行垃圾回收,
总之GC是一种自动管理内存的机制,可以帮助程序员避免内存泄漏等问题,不同的GC实现有不同的原理和算法,但其基本原理都是找出不再被程序使用的内存对象,并将其释放,以便程序继续使用。