我一直听说Java中的资源在使用后必须关闭,否则这些资源将被耗尽。对于使用很少资源(例如1个或2个文件读取器/缓冲读取器等)的小型程序,这真的值得关注吗?JVM不会跟踪程序正在使用的资源吗?程序退出后,它不会释放所有这些资源吗?如果没有,为什么即使在程序退出后,JVM仍会阻止这些资源被阻塞?
这些资源确实在正常的 JVM 退出时关闭。但是,您可能并不总是知道您的方法是如何被调用的,它可能会被另一个程序员从外部调用 2000 次,而这些资源将开始堆积。
此外,某些非主流操作系统可能会遇到以下问题:如果 JVM 异常停止(通过Runtime.getRuntime().halt()或 JVM 内的重大内部错误/不一致),则资源可能保持打开状态(由于未运行清理代码),可能在重新启动或手动释放之前无法使用。即使在主流系统上,套接字也可以保持打开状态数分钟。
| 归档时间: |
|
| 查看次数: |
1212 次 |
| 最近记录: |