丢出详细地址:
https://blog.csdn.net/zhe_king/article/details/80656139
https://www.cnblogs.com/cxxjohnson/p/8675508.html
一位大佬的理解如下:
1 Java没有析构函数,不要把finalize当成析构函数
2 如果一个对象你不需要用到了,并且想要释放它的一些资源,你应该自己手动执行,而不是依赖于它的finalize()在里面去释放资源。因为一个对象不使用到了,不代表它一定就会被回收掉。是否回收取决于内存,只有当内存不足时才会回收
- 通常我们在Java中通过new创建出来的对象,在需要被回收时是会被垃圾回收器处理的,但如果是通过native方法来申请内存的话,则垃圾回收器无法处理。所以需要finalize()方法,在这个方法里对使用malloc之类的函数申请的内存进行释放 (这里的native函数是Java调用c语言这样的 在调用的时候 前面会加个native关键字)
网友评论