我正在尝试将大型JSONArray写入字符串,然后保存在sdcard中。在此过程中,在将JSONArray转换为字符串时获取OutOfMemory异常。代码将在下面给出。请有人说如何克服这个......
代码:
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)
提前致谢...
答案 0 :(得分:0)
可能有两个人:
这里不能动态增加堆大小,但您可以通过使用来请求使用更多。
<application
..................
..................
android:largeHeap="true"/>
。
答案 1 :(得分:-1)
如果内存不足,则执行线程中的操作并增加堆大小。
编辑堆大小
转到Android清单并在应用程序标记中添加 android:largeHeap =&#34; true&#34;