Я работаю над оптимизацией памяти фрагмента кода. который отвечает за передачу файла изображения на другой компьютер. Файл изображения - 240 МБ, а текущий размер кучи приложения - 1536 МБ.Проблема с использованием StringBuilder
Текущий код
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))
это не имеет никакого значения.
Любые идеи, как я могу сжать количество объектов, так как я не могу использовать строковый построитель или строковый буфер.
С уважением
Dheeraj Джоши
Да. Требуется. По факту. Метод SendToPc вызывает еще 2 метода и, наконец, передает. Поэтому я не могу изменить отправку части. Поэтому мне нужно что-то сжать в вычислительной части. –