首页 > 试题广场 >

GC是什么?为什么要有GC?

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

编辑于 2017-05-24 13:51:18 回复(0)
garbage collection 中文名叫垃圾回收机制 。GC的作用在于回收程序中由编码人员从堆中申请的内存 减少内存泄漏的可能
编辑于 2017-07-29 10:31:37 回复(0)
GC是垃圾回收。
内存处理是编程人员容易出现问题的地方,忘记或错误的内存回收,会导致程序或系统不稳,甚至崩溃。Java的GC功能可自动监控对象是否超过作用域,从而达到自动回收内存的目的。Java语言没有提供释放已分配的显示操作方法。
发表于 2017-07-29 21:04:39 回复(0)
Java GC(Garbage Collection,垃圾收集,垃圾回收)机制,是Java与C++/C的主要区别之一,作为Java开发者,一般不需要专门编写内存回收和垃圾清理代 码,对内存泄露和溢出的问题,也不需要像C程序员那样战战兢兢。这是因为在Java虚拟机中,存在自动内存管理和垃圾清扫机制。概括地说,该机制对 JVM(Java Virtual Machine)中的内存进行标记,并确定哪些内存需要回收,根据一定的回收策略,自动的回收内存,永不停息(Nerver Stop)的保证JVM中的内存空间,放置出现内存泄露和溢出问题。
发表于 2020-06-25 22:21:07 回复(1)
GC是Gabage Collection的缩写,即垃圾收集的意思。所以GC在此为垃圾收集器。
因为在编程的过程中,程序员应该把更多的精力投入到更好的实现程序功能,而不是耗费大量时间在内存分配上。
发表于 2017-08-05 19:13:28 回复(0)