安全编程(十)- 垃圾收集器

1.Java中垃圾收集器有什么作用?什么时候进行垃圾回收?

        众所周知,基本数据类型,局部变量都是存放在栈内存中的,用完就消失;而用new创建的实例化对象和数组,是存放在堆内存中的,用完之后就需要一个东西来清除回收它们。

        在垃圾收集器对这些“垃圾”进行回收时,要判断哪些对象还“存活”着,哪些对象已经“死去”(即不可能被任何途径使用的对象)了。

        垃圾回收的目的就是识别并丢弃应用不再使用的对象来释放和重用资源。

2.System.gc()和Runtime.gc()的作用是什么?

        所谓GC,就是Gabage Collection的意思!两者都是呼叫建议Java虚拟机的垃圾回收器运行回收的内存垃圾!而且,两者的建议有可能被Java虚拟机拒绝。GC会周期性的运行,Java虚拟机由JVM决定运行的时机。

3.finalize()方法什么时候被调用?

        finalize()方法,Java方法运行finalize()方法在垃圾收集器从内存中清除对象之前做一些有必要的清理工作。这个方法是垃圾收集器确定这个对象没有被引用时对这个对象调用的。在释放对象占用内存之前,垃圾收集器会调用finalize()方法,一般这个方法会建议释放对象占用的内存!

4.Java有无析构函数及相关概念?

        Java没有析构函数及相关概念,代之的是Java的垃圾回收机制。c++中,如果程序没有缺陷,析构函数会被自动调用并且完成清理工作,这个过程是一定会执行的;而Java的垃圾回收只与内存有关,在内存未被耗尽之前,那么与垃圾回收相关的任何动作都不会执行(尤其是finalize()方法)。

5.如果对象的引用被置为null,垃圾收集器是否会立即释放对象占用的内存?

        不会,因为还没确定这个引用是否不可恢复使用!

猜你喜欢

转载自blog.csdn.net/a_cherry_blossoms/article/details/82557123