Я работаю над оптимизацией памяти куска кода. который отвечает за передачу файла изображения на другой компьютер. Размер файла изображения составляет 240 МБ, а текущий размер кучи приложения составляет 1536 МБ.
Текущий код
byte[] buf = new byte[size];
while ((num = is.read(buf)) > 0) {
...
String str = new String(buf, 0, num));
...
sendToPc(str);
}
Это создает много строковых объектов, и когда я пытаюсь отправить изображение на более чем 5 ПК, у него заканчивается куча. Поэтому я подумал об использовании строителя строк (меня не волнует синхронизация)
Но у строителя строк нет варианта, подобного
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))
, это ничего не изменит.
Любые идеи, как я могу сжать количество объектов, так как я не могу использовать построитель строк или строковый буфер.
Привет
Дхирадж Джоши