gpt4 book ai didi

java - 在关闭 OutputStreamWriter 之前尝试终止程序的后果

转载 作者:行者123 更新时间:2023-11-29 05:57:35 26 4
gpt4 key购买 nike

这是更大的绘图程序(特别是 JavaPlot)的一部分。简而言之,我会尝试绘制一些东西;该图将出现在

out.write(comms); 

但一旦它击中就关闭

out.close()

我知道您需要关闭 OutputStreamWriter,因此我没有删除该行,而是创建了一个扫描器,它等待用户按下“Q”,然后程序继续正常运行,关闭图形、OutputStreamWriter 和扫描器

        OutputStreamWriter out = new OutputStreamWriter(proc.getOutputStream());
out.write(comms);
out.flush();

//added from here
//waiting until input is given
Scanner timeKiller = new Scanner(System.in);
String check = timeKiller.nextLine();
if(check != "q"){
check = timeKiller.nextLine(); //<---waiting here.
}
timeKiller.close();
//to here

out.close();

我正在做的事情危险吗?如果有人通过关闭窗口来关闭图表,这不会终止程序,对吗?这不会导致内存泄漏(对吗?),但如果该进程仍在运行并且他们多次运行该程序,它最终将开始成为一个问题。我怎样才能解决这个问题?就在我的脑海中,如果窗口关闭,也许会向窗口添加一个监听器来打破循环?还是我弄错了,这根本不是问题?

最佳答案

如果您在最近一次写入后刷新了流/写入器,那么如果您在没有先对流调用 close 的情况下退出应用程序,您将不会丢失任何数据。如果您退出应用程序,JVM 将终止并且存储泄漏变得无关紧要。

另一方面,如果您没有让应用程序在它应该退出的时候退出,并且用户因此生成了多个实例,那么您将遇到大量 JVM 填满用户 PC 内存的问题.如果发生这种情况,与处理孤立的 JVM 相比,假设的泄漏流是微不足道的。

但是从你的问题中确实不清楚你实际在做什么和/或打算做什么,所以我不能对你的具体情况发表评论。

关于java - 在关闭 OutputStreamWriter 之前尝试终止程序的后果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11472225/

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