JTextArea消耗大量内存

时间:2012-07-03 00:28:56

标签: java swing document jtextarea

我在Java和Swing方面遇到了一些内存问题。我有一个JTextArea(与JTextPane相同的问题)我用来从C ++可执行文件重定向stdout。而且因为我输出了大量的标准输出,JTextPane占用了大量的空间。无论如何,我把它归结为以下代码,都是用Java编写的。

private javax.swing.JTextArea jtextareastdout;
....

for (int i = 0; i < 200000; i++) {
    String randomstr = UUID.randomUUID().toString();

    jtextareastdout.setText(randomstr);  //<tag_memory>
    if (i % 100 == 0)
        System.gc(); //<tag_no_help>
}

以上代码消耗100MB。随着tag_memory行被注释掉,更少(使用我所有其他代码和UI的30MB)。如何减少Java的内存使用量?目前正在使用Java 7 update 4。

提前致谢。

1 个答案:

答案 0 :(得分:4)

  

我只是不明白所有记忆的去向。

PlainDocument讲述了这个故事:每个代码点有一个或两个16位代码单元,一行开始,以及使其可编辑所需的所有障碍。对于只读查看,我将使用重定向:yourprogram 2>&1 > view。在Java中,您可以从stdin读取List<String>,每行String,并使用JTable进行查看。默认renderer非常有效。有一个相关的例子here