我正在尝试将大的JSONArray写入字符串,然后保存在SD卡中。在此过程中将JSONArray转换为字符串时发生OutOfMemory异常。代码将在下面给出。请任何人讲如何克服这个...将JSONArray转换为StringBuilder时的java.lang.OutOfMemoryError
代码:
JSONArray loanSurvey = callbackObject.getJSONArray("bankloansurvey");
try {
String filename = "surveyfile.txt";
File myFile = new File(surveyFolder, filename);
if (!myFile.exists())
myFile.createNewFile();
FileOutputStream fos;
StringBuilder surveyData = new StringBuilder(result.length());
surveyData.append(loanSurvey.toString()); // here getting outofmemory error
byte[] dataArray = surveyData.toString().getBytes();
错误报告:
java.lang.OutOfMemoryError
at java.lang.AbstractStringBuilder.enlargeBuffer(AbstractStringBuilder.java:94)
at java.lang.AbstractStringBuilder.append0(AbstractStringBuilder.java:132)
at java.lang.StringBuilder.append(StringBuilder.java:124)
at org.json.JSONStringer.string(JSONStringer.java:344)
at org.json.JSONStringer.value(JSONStringer.java:252)
at org.json.JSONObject.writeTo(JSONObject.java:672)
at org.json.JSONStringer.value(JSONStringer.java:237)
at org.json.JSONArray.writeTo(JSONArray.java:602)
at org.json.JSONStringer.value(JSONStringer.java:233)
at org.json.JSONObject.writeTo(JSONObject.java:672)
at org.json.JSONStringer.value(JSONStringer.java:237)
at org.json.JSONArray.writeTo(JSONArray.java:602)
at org.json.JSONStringer.value(JSONStringer.java:233)
at org.json.JSONObject.writeTo(JSONObject.java:672)
at org.json.JSONStringer.value(JSONStringer.java:237)
at org.json.JSONArray.writeTo(JSONArray.java:602)
at org.json.JSONArray.toString(JSONArray.java:574)
在此先感谢...
试试这个[link](http://stackoverflow.com/questions/11275650/how-to-increase-heap-size-of-an-android-application) –
什么是JSON的大小? – Mani
如果内存不足,为什么不在线程中执行操作并增加堆大小? – silverFoxA