在java中,它通过GC自动释放内存资源。但是我们不仅拥有内存资源,还拥有非内存资源,如数据库连接,网络连接,文件句柄。所以,这也需要发布(不仅仅是垃圾收集)当你完成它时。
所以,我的问题是,如果我们不处理(释放)java中的非内存资源,我们可能遇到的问题是什么?
请指导我对此有清楚的认识......
答案 0 :(得分:1)
一个例子是。 当您使用像FileInputStream这样的API时。这是您调用的非备忘录资源之一。当您从文件中读取某些内容并且忘记关闭它时,系统将占用此文件,程序结束。在占领期间,您可能无法打开此文件。这就是问题所在。
答案 1 :(得分:-1)
你让事情变得复杂。使用Java设计程序时,应尽可能将此类非内存资源管理留给操作系统或其他应用程序。这意味着您可以在不考虑文件处理程序,数据库连接的情况下关闭JVM。操作系统将回收文件处理程序,数据库将回收非活动连接,应用程序服务器将回收网络连接......相信我,操作系统,数据库和流行的网络应用程序比你想象的更聪明。