在java语言中,垃圾回收(Garbage Collection,GC)的主要作用是回收程序中不再使用的内存。 为了减轻开发人员的工作,同时增加系统的安全性和稳定性,java语言提供了垃圾回收器来自动检测对象的作用域,可自动地把不再被使用的存储空间释放掉。主要的任务是:分配内存,回收不再被引用的对象的内存空间。 垃圾回收器提高了开发人员的开发效率,保证程序的稳定性,但是也带来了问题,为了处理垃圾回收,垃圾回收器必须跟踪内存的使用情况,释放没用的对象,在完成内存的释放后还需要处理堆中的碎片,这些操作增加JVM的负担,从而降低了程序的执行效率。 垃圾回收依据一定的算法执行的,垃圾回收算法如下: 1.引用计数算法:当对象被引用时,引用计数器加1,相反减1,缺点是无法解决相互引用的问题。 2.标记-清除算法:标记所用从根节点开始的可达对象,清除所有未被标记的对象。(适用于老年代) 3.复制算法:将内存空间分成两块,每次将正在使用的内存中的存活对象复制到未使用的内存块中,之后清除正在使用的内存块。算法效率高,但是代价是将系统内存折半。(适用于新生代。存活对象少,垃圾对象多) 4.标记-压缩算法:该算法是对“标记-清除算法”的改进,不是直接对标记对象进行清除,而是将存活的对象压缩到内存的一端,然后直接清理掉边界以外的内存。(适用于老年代) 5.分代算法:根据对象的存活周期的不同将内存划分为几块,每块视为一代,一般是把 java内存堆分为新生代和老年代。根据各个年代的特点采用最适当的垃圾收集算法。
这道题你会答吗?花几分钟告诉大家答案吧!
扫描二维码,关注牛客网
下载牛客APP,随时随地刷题
在java语言中,垃圾回收(Garbage Collection,GC)的主要作用是回收程序中不再使用的内存。 为了减轻开发人员的工作,同时增加系统的安全性和稳定性,java语言提供了垃圾回收器来自动检测对象的作用域,可自动地把不再被使用的存储空间释放掉。主要的任务是:分配内存,回收不再被引用的对象的内存空间。 垃圾回收器提高了开发人员的开发效率,保证程序的稳定性,但是也带来了问题,为了处理垃圾回收,垃圾回收器必须跟踪内存的使用情况,释放没用的对象,在完成内存的释放后还需要处理堆中的碎片,这些操作增加JVM的负担,从而降低了程序的执行效率。 垃圾回收依据一定的算法执行的,垃圾回收算法如下: 1.引用计数算法:当对象被引用时,引用计数器加1,相反减1,缺点是无法解决相互引用的问题。 2.标记-清除算法:标记所用从根节点开始的可达对象,清除所有未被标记的对象。(适用于老年代) 3.复制算法:将内存空间分成两块,每次将正在使用的内存中的存活对象复制到未使用的内存块中,之后清除正在使用的内存块。算法效率高,但是代价是将系统内存折半。(适用于新生代。存活对象少,垃圾对象多) 4.标记-压缩算法:该算法是对“标记-清除算法”的改进,不是直接对标记对象进行清除,而是将存活的对象压缩到内存的一端,然后直接清理掉边界以外的内存。(适用于老年代) 5.分代算法:根据对象的存活周期的不同将内存划分为几块,每块视为一代,一般是把 java内存堆分为新生代和老年代。根据各个年代的特点采用最适当的垃圾收集算法。