Я сталкиваюсь с исключением из-за нехватки памяти при преобразовании 1,8-мегабайтного изображения в байты и последующем шифровании, и, наконец, преобразовании в строку (длина, напечатанная в журнале, составляет 1652328).А затем я добавляю эту строку в какой-то формат XML, чтобы опубликовать там, где возникает настоящая проблема.При добавлении некоторых тегов к этой pictureString с использованием StringBuffer
или StringBuilder
или добавлении к строке Out of Memory происходит исключение .Как решить эту проблему?
Для небольших изображений эта проблема не реплицируется.
Приведенный ниже фрагмент кода преобразует изображение по пути path
в String
.
fis = new FileInputStream(path);
buffer = new byte[fis.available()];
try {
fis.read(buffer, 0, buffer.length);
String byteString =
com.mobile.android.components.Base64.encodeBytes(buffer);
return byteString;
} catch (IOException ex) {
}
Приведенное выше byteString
добавляется в сообщение XML следующим образом.
StringBuilder pictureName = new StringBuilder();
pictureName.append(byteString ); //here array out of bound at StringBuilder.extendBuffer
..........
appending continues
ОБНОВЛЕНО
В приведенном выше добавлении кодированный byteStream
шифруется с использованием шифра AES и затем добавляется к StringBuilder
.