3

我在使用 Java 和 Swing 时遇到了一些内存问题。我有一个JTextArea(与 相同的问题JTextPane)用于从 C++ 可执行文件重定向标准输出。而且因为我输出了很多标准输出,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 行,少了很多(30MB 加上我所有的其他代码和 UI)。如何减少 Java 的内存使用量?当前使用 Java 7 更新 4。

提前致谢。

4

1 回答 1

5

我只是不明白所有的记忆都去哪儿了。

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

于 2012-07-03T01:36:41.167 回答