黑马程序员技术交流社区

标题: 问一个有关java中析构函数的问题 [打印本页]

作者: 李然    时间: 2013-12-7 01:17
标题: 问一个有关java中析构函数的问题
本人菜鸟一枚,想请教各位大神一个问题,在java中的内存回收机制,能不能用析构函数来代替?析构函数能不能像构造函数那样被重写?java中除了虚拟机的自动内存回收机制,还有没有可以手动对内存进行回收的方法或者类?
希望各位高手可以指点一下,多谢!!!{:soso_e113:}
作者: ysunday    时间: 2013-12-7 01:24
System.gc()好像是这个,但是上网的时候还看见有经验的人说最好别自己调用,会出现未知的错误。都学java了,咱能省心就省心吧
作者: 吴琼cola    时间: 2013-12-7 09:38
java是有自动的垃圾回收机制的。这一点不像c++。在C++中,对象所占的内存在程序结束运行之前一直被占用,在明确释放之前不能分配给其它对象;而在Java中,当没有对象引用指向原先分配给某个对象的内存时,该内存便成为垃圾。JVM的一个系统级线程会自动释放该内存块。你可以查一下java垃圾回收机制的资料,也有助于你写出效率较高的代码。
1.其实,若果想在垃圾回收时做一点事情,可以使用finalize()函数,这是在Object类中定义的,我们只要重载它就可以了。
2.如下代码 可以用System.gc(),来进行手动回收。
class TestGC {
public static void main(String[] args)
{
new TestGC();
System.gc();
System.runFinalization();
}
}






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2