Я работаю над приложением, которое извлекает данные с устройства Bluetooth. Но иногда он выдает ошибку ООГО при выполнении некоторых операцийОшибка памяти: StringBuilder.append throwing OutOfMemoryError
Вот коду
следующим образом я хранящие данные в ArrayList<String>
private ArrayList<String> dataList;
if (response.compareTo("Some Filter") != 0 //response is of String type
{
dataList.add(response);
}
А ниже for each
петли он бросает OOM
for (String s : dataList) {
if(s.length()>8)
dataList.set(dataList.indexOf(s), s.substring(8));
else
dataList.set(dataList.indexOf(s), "");
}
String downloadedData = "";
for (String s : dataList) {
downloadedData += s; //This one is the 280th line throwing OOM
}
До сих пор я читал this пост, но он дает решения для чтения данных в формате JSON или веб-ответ
And i know OOM error can't be handled but prevented by following a good Architecture
И есть также эти два Callbacks для Android
Но Я не уверен, как пойти на решение!
Катастрофа StackTrace является:
java.lang.OutOfMemoryError: Failed to allocate a 106990 byte allocation with 5840 free bytes and 5KB until OOM
at java.lang.AbstractStringBuilder.enlargeBuffer(AbstractStringBuilder.java:95)
java.lang.AbstractStringBuilder.append0(AbstractStringBuilder.java:146)
at java.lang.StringBuilder.append(StringBuilder.java:216)
at Class_name.java:280.
Любая помощь приветствуется :)
Это действительно линия 280? Покажите предыдущую строку. –
Какой размер вашего списка данных, ИМО все зависит от этого? – home