3

JavaとSwingでメモリの問題が発生しています。C ++実行可能ファイルからstdoutをリダイレクトするために使用する(JTextAreaと同じ問題)があります。JTextPaneそして、私は多くの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 7update4を使用しています。

前もって感謝します。

4

1 に答える 1

5

私はすべての記憶がどこに向かっているのか理解していません。

PlainDocumentコードポイントごとに1つまたは2つの16ビットコードユニット、線のマップが開始され、編集可能にするために必要なすべての障害があります。読み取り専用の表示には、リダイレクトを使用しますyourprogram 2>&1 > view。Javaでは、1行に1つずつ、から読み取り、stdinを表示することができます。デフォルトのレンダラーは非常に効率的です。ここに関連する例があります。List<String>StringJTable

于 2012-07-03T01:36:41.167 に答える