我在使用 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。
提前致谢。
最佳答案
I just don't understand where all the memory is going.
PlainDocument
讲述故事:每个代码点一个或两个 16 位代码单元,一个线图开始以及使其可编辑所需的所有障碍。对于只读查看,我会使用重定向:yourprogram 2>&1 > view
.在 Java 中,您可以从 stdin
读取进入List<String>
, 和一个 String
每行,并使用 JTable
查看它.默认 renderer效率很高。有一个相关的例子 here .
关于java - JTextArea 占用大量内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11302982/