如果不手动关闭流,何时关闭?

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

请考虑以下示例方案。

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规范对此不做任何保证。您确实应该finally关闭这些资源。

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

有OS设施可以检查打开的文件和流,例如lsof

以上是 如果不手动关闭流,何时关闭? 的全部内容, 来源链接: utcz.com/qa/398399.html

回到顶部