在我的应用程序中,我尝试在我的设备中实现缓存数据,以便在离线模式下显示它。它之前工作正常,但现在我得到了这个崩溃。
Fatal Exception: 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.JSONObject.writeTo(JSONObject.java:672)
at org.json.JSONStringer.value(JSONStringer.java:237)
at org.json.JSONObject.writeTo(JSONObject.java:672)
at org.json.JSONStringer.value(JSONStringer.java:237)
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.JSONObject.toString(JSONObject.java:641)
这就是问题发生的路线
mCaching.cache(response.toString(), Caching.TYPE_GLOBAL);
问题恰好在此代码中尝试将JsonObject
转换为字符串response.toString()
在搜索问题后,一些答案建议在我的应用程序清单文件中添加android:largeHeap="true"
但我已经在崩溃产生之前添加了它。任何帮助?
答案 0 :(得分:0)
您尝试以JSON身份编写的对象很可能具有循环引用循环。实际上内存耗尽非常困难,除非您正在加载大量巨大的图片,但文本内容并非如此,除非您保存的数据很大,我怀疑
无论在这种情况下,您都应该考虑将JSON直接写入文件而不是内存String。此外,最好首先写入临时文件,然后移动该文件以替换以前保存的数据,以便在操作中途无法写入时保存。