编程语言
首页 > 编程语言> > Java中最终化的目的是什么?

Java中最终化的目的是什么?

作者:互联网

我对最终定稿的理解是这样的:

为了清理或回收对象占用的内存,垃圾收集器开始运行. (自动调用?)

垃圾收集器然后取消引用该对象.有时,垃圾收集器无法访问该对象.然后调用finalize进行最后的清理处理,之后可以调用垃圾收集器.

这是对最终确定的准确描述吗?

解决方法:

垃圾收集器在后台自动工作(尽管可以显式调用它,但对此的需求应该很少).它基本上只清理其他对象没有引用的对象(授予,完整图片更复杂,但这是基本的想法).因此它不会更改任何活动对象中的任何引用.如果无法从任何活动对象访问对象,则表示可以安全地对其进行垃圾回收.

完成意味着清理对象获取的资源(不是内存,而是其他资源,例如文件句柄,端口,数据库连接等).但是,它没有真正解决:-(

>调用finalize()时无法预测
>事实上,无法保证finalize()将永远被调用!

所以即使它被保证被调用,它也不是一个释放资源的好地方:当它被调用以释放你打开的所有数据库连接时,系统可能已经完全耗尽了空闲连接,并且你的应用程序不再起作用了.

标签:java,finalization
来源: https://codeday.me/bug/20190927/1822360.html