在阅读大输出时,Textarea会使用很多RAM

  • 本文关键字:RAM Textarea 输出 java
  • 更新时间 :
  • 英文 :


我的程序执行系统命令,并逐行返回输出,但是,有几个命令会产生很多行,在这种情况下,RAM使用率上升到〜700MBS,知道其他任何命令中通常的RAM使用率为50-60MB。

这是使用BufferedReader处理读取输出的方法,它是通过处理命令过程创建的另一种方法来调用的。它还将输出线路传递到Showoutputline((方法,该方法将其打印到控制台或文本方面。

    protected void formatStream(InputStream inputStream, boolean isError) {
    bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
    String tempLine = null;
    // Read output
    try {
        while ((tempLine = bufferedReader.readLine()) != null) {
            showOutputLine(tempLine, isError);
        }
    } catch (IOException e) {// just stop
    }
}

引起问题的命令的一个示例:

adb logcat

编辑:看起来BufferedReader是无辜的,但是问题仍然存在。由jtextarea引起。

BufferedReader总是在固定尺寸数组中使用约16 kb(8k * 2个字节字符(。如果您使用的是更多的副作用,它是生成这么多字符串的副作用(ESP,如果您的文本确实很长(,而不是BufferedReader本身。

Textarea可以根据文本的长度保留更多的内存使用。

无论如何,真正重要的内存使用情况是完整GC后堆的大小,其余的都是各种各样的头顶。

btw mb = megi-bit,mb = mega-byte。

最新更新