Я сочиняю файл JSON с объектами в цикле for
Когда количество данных, передаваемых в файл JSON, увеличивается, я вижу следующую ошибку в Logcat:
I / dalvikvm-heap: увеличение кучи (в случае фрагмента) до 16,159 МБ для 1490086 байт
распределение
Что здесь не так?
Я подтвердил некоторые другие сообщения на Grow heap (frag case)
, но безрезультатно!
Что увеличивает размер кучи, что приводит к такой ошибке?
Код петли:
JSON_Functions_PRD mJSONF_Test = new JSON_Functions_PRD();
JSONObject obj = new JSONObject();
String Temp;
Temp = obj.toString();
mJSONF_Test.setJSONobj_PRD(Temp);
mJSONF_Test.CreateMenu_SMS_Naked();
A_DataClass m_DataClass = new A_DataClass();
int count = 10000;
for (int i = 0; i < count; i++)
{
mDataClass.setA("A1");
mDataClass.setB("B1");
mJSONF_Test.setItem_M0(mDataClass);
}
Функции JSON:
public class JSON_Functions_PRD {
String mJSONString_Result;
JSONObject obj = new JSONObject();
public void setJSONobj_PRD(String mJSONString) {
try {
mJSONString_Result = mJSONString;
obj = new JSONObject(mJSONString_Result);
} catch (JSONException e) {
e.printStackTrace();
}
}
public String getJSON_PRD() {
mJSONString_Result = obj.toString();
return mJSONString_Result;
}
public void CreateMenu_SMS_Naked() {
JSONArray jA1 = new JSONArray();
try {
obj.put("M0", jA1);
} catch (JSONException e) {
e.printStackTrace();
}
}
public void setItem_M0(A_DataClass Item) {
JSONArray jA1 = new JSONArray();
JSONObject jO1 = new JSONObject();
JSONObject jO2 = new JSONObject();
try {
jA1 = obj.getJSONArray("M0");
jO1.put("a", Item.getA());
jO2.put("a", Item.getB());
jO1.put("b", jO2);
jA1.put(jO1);
} catch (JSONException e) {
e.printStackTrace();
}
}
Класс данных:
public class A_DataClass {
String A;
String B;
public A_DataClass()
{
}
public String getA() {
return A;
}
public void setA(String name) {
thisA = name;
}
public String getB() {
return B;
}
public void setB(String name) {
this.B = name;
}
}
Edit:
Я должен добавить этот пункт, что я проверил случай на 3 мобильных наборах (2 SAMSUNG, 1 HUAWEI), и проблема видна только в HUAWEI