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

标签 java java.util.scanner outputstream javaplot

这是更大的绘图程序(特别是 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/

相关文章:

java - Android 中使用 Dom 从 XML 树中获取 HTML 内容

java - Spring bean 验证不会替换类型不匹配错误的消息

java - 平方数数学方法不起作用(默认构造函数无法处理异常类型)

java - 扫描仪在使用 next() 或 nextFoo() 后跳过 nextLine()?

android - 使用正则表达式从网页捕获图像

java - 如何在 Java 8 中实现构建器模式?

java - 如何获得从扫描仪输入到阵列的所有排列?

java - int[] 数组的outputStream.write()

Java写入关闭的输出流不抛出ioexception

java - 如何计算自定义输出流中的消息摘要?