java – JVM不会释放程序员在程序退出时未明确关闭的所有资源

我一直听说
java中的资源必须在使用后关闭,否则这些资源就会耗尽.对于使用极少资源的小程序(如1或2个文件阅读器/缓冲阅读器等),这真的是一个值得关注的问题吗? JVM是否跟踪程序使用的资源?一旦程序退出,它不会释放所有这些资源吗?如果没有,为什么即使在程序退出后JVM也会阻止这些资源? 最佳答案 这些资源确实在正常JVM出口时关闭.但是,您可能并不总是知道如何调用您的方法,并且它可能被另一个程序员在外部调用2000次,并且这些资源将开始堆叠.

此外,某些非主流操作系统可能会遇到这样的问题:如果JVM异常停止(通过System.halt或崩溃),则资源可能保持打开状态(由于清理代码未运行),可能无法使用,直到重新启动或手动释放.即使在主流系统上,套接字也可以保持打开状态多分钟.

点赞