在java中,它通过GC自动释放内存资源。但是我们不仅有内存资源,还有数据库连接,网络连接,文件句柄等非内存资源。所以,这也是需要释放的(不仅仅是垃圾收集) 当你完成它时。
所以,我的问题是,如果我们不在 java 中处理(释放)非内存资源,我们可能会面临什么问题?
请指导我摆脱对此的清晰想法...
在java中,它通过GC自动释放内存资源。但是我们不仅有内存资源,还有数据库连接,网络连接,文件句柄等非内存资源。所以,这也是需要释放的(不仅仅是垃圾收集) 当你完成它时。
所以,我的问题是,如果我们不在 java 中处理(释放)非内存资源,我们可能会面临什么问题?
请指导我摆脱对此的清晰想法...
一个例子就是这样。当你使用 FileInputStream 之类的 API 时。这是你调用的非备忘录资源之一。当你从一个文件中读取完一些东西,而你忘记关闭它时,系统将占用这个文件,直到程序结束。在占领期间,您可能无法打开此文件。这就是问题所在。
你让事情变得复杂了。当你用 Java 设计程序时,你应该尽可能把这种非内存资源的管理留给 OS 或其他应用程序。这意味着您可以直接关闭 JVM,而无需考虑文件处理程序、数据库连接。OS 会回收文件处理程序,DB 会回收非活动连接,appserver 会回收网络连接……相信我,操作系统、数据库和流行的网络应用程序比你想象的要聪明。