当前位置: 技术问答>java相关
求教前辈们一个关于finalize()的问题,谢谢大家帮助:)
来源: 互联网 发布时间:2015-08-15
本文导语: 大家好,我是个刚开始学习java的新手,向大家请教一个问题: (1)finalize()方法到底应该怎么用?是不是类似于C++中的析构函数? (2)每个类都要写自己的finalize()方法吗?java的内存回收不是自动的吗,那(3)...
大家好,我是个刚开始学习java的新手,向大家请教一个问题:
(1)finalize()方法到底应该怎么用?是不是类似于C++中的析构函数?
(2)每个类都要写自己的finalize()方法吗?java的内存回收不是自动的吗,那(3)为什么还要用finalize()方法?最后就是写finalize()方法时,方法体里都写什么?
小弟java刚刚开始,问题不少,希望众位前辈多多帮助,谢谢了:)
(1)finalize()方法到底应该怎么用?是不是类似于C++中的析构函数?
(2)每个类都要写自己的finalize()方法吗?java的内存回收不是自动的吗,那(3)为什么还要用finalize()方法?最后就是写finalize()方法时,方法体里都写什么?
小弟java刚刚开始,问题不少,希望众位前辈多多帮助,谢谢了:)
|
finalize一般是不用写的,他就是类似于C++中的析构函数,但是jvm不能保证finalize函数在这个对象被垃圾回收回收掉的时候一定会被调用,并且sun也建议不要使用finalize函数
|
当java 调用非java方法时(这种方法可能是c或是c++的)在非java代码内部也许调用了c的malloc()函数来分配内存,而且除非调用那个了free() 否则不会释放内存, 因为free()是c的函数 所以需要在finalize()内部的一个固有方法调用