finalize() 方法什么时候被调用?析构函数 (finalization) 的目的是什么?

迷失技术de小猪 JVM 68

垃圾回收器(garbage colector)决定回收某对象时,就会运行该对象的 finalize()方法但是在 Java 中很不幸,如果内存总是充足的,那么垃圾回收可能永远不会进行,也就是说 filalize()可能永远不被执行,显然指望它做收尾工作是靠不住的。

那么 finalize()究竟是做什么的呢?它最主要的用途是回收特殊渠道申请的内存。Java 程序有垃圾回收器,所以一般情况下内存问题不用程序员操心。

但有一种 JNI(Java Native Interface)调用 non-Java 程序(C 或 C++), finalize()的工作就是回收这部分的内存。

回复

我来回复
  • 暂无回复内容

免费咨询
免费咨询
扫码关注
扫码关注
联系站长

站长Johngo!

大数据和算法重度研究者!

持续产出大数据、算法、LeetCode干货,以及业界好资源!

2022012703491714

微信来撩,免费咨询:xiaozhu_tec

分享本页
返回顶部