gpt4 book ai didi

java - 如果不手动关闭流,什么时候关闭?

转载 作者:太空宇宙 更新时间:2023-11-04 10:55:03 29 4
gpt4 key购买 nike

我想知道如果不手动关闭流,它何时关闭。我的意思是,如果流的引用范围不再存在,流会被关闭吗?

考虑以下示例场景。

Class A{
InputStream in;
OutputStream out;
A(){
// Initialize and create the streams.
}
...
}
Class B{
public void myMethod(){
A a = new A();
System.out.println("End of my method.")
}
...
}

在这里,一旦我完成了流,我就会退出 myMethod() 但反过来处理该过程的程序不会终止并继续执行其他操作。

我没有关闭流。一旦A类的引用范围结束,它会自动关闭吗? (即,当 myMethod() 结束时)? GC 会处理这个吗?另外,我读到一旦进程结束并且系统释放为其他进程保留的所有资源,流将被关闭。我们如何检查流是否打开? Java 中是否有任何 linux 命令或选项可以检查这一点?

感谢任何帮助!

最佳答案

我不认为 JVM 规范对此做出任何保证。您确实应该最终关闭这些资源。

当进程结束时,操作系统将释放与其关联的所有资源(包括内存、文件句柄和网络套接字)。

有操作系统工具可以检查打开的文件和流,例如 lsof .

关于java - 如果不手动关闭流,什么时候关闭?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47401454/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com