私はコードのメモリ最適化に取り組んでいます。画像ファイルを他のコンピュータに転送する役割を担う。画像ファイルは240Mbで、現在のアプリケーションのヒープサイズは1536Mbです。StringBuilderを使用する際の問題
現在のコードは
byte[] buf = new byte[size];
while ((num = is.read(buf)) > 0) {
...
String str = new String(buf, 0, num));
...
sendToPc(str);
}
これは、文字列オブジェクトの多くを作成し、私は5つ以上のPCのにイメージをプッシュしようとすると、それは、ヒープを使い果たしています。だから私は
(私は同期を気にしない)文字列ビルダを使用するのではと思ったが、文字列ビルダは
byte[] buf = new byte[size];
StringBuilder str = new StringBuilder(size);
while ((num = is.read(buf)) > 0) {
...
str.insert(0,buf); --> Apparently can not append byte array.
...
str.delete(0, str.length());
}
のようなバリエーションを持っていないと私はstr.insert(0,new String(buf, 0, num))
を試しても、それはどんな違いがありません。
私は文字列ビルダーや文字列バッファーを使用することができないので、どのようにオブジェクトの数を絞ることができます。
よろしく
Dheeraj女子
はい。それは必須です。実際には。 SendToPcメソッドはさらに2つのメソッドを呼び出し、最後にそれを転送します。だから私は送信部分を変更することはできません。だから私は計算部分で何かを絞る必要があります。 –