我正在尝试在我的应用程序中使用json实现Volley库。但每次我运行它时,应用程序会冻结并崩溃,显示此日志消息。我无法弄清问题是什么?
java.lang.OutOfMemoryError: Failed to allocate a 36089274 byte allocation with 16769200 free bytes and 16MB until OOM
at java.lang.AbstractStringBuilder.enlargeBuffer(AbstractStringBuilder.java:95)
at java.lang.AbstractStringBuilder.append0(AbstractStringBuilder.java:125)
at java.lang.StringBuffer.append(StringBuffer.java:278)
at java.io.StringWriter.write(StringWriter.java:123)
at com.android.internal.util.FastPrintWriter.flushLocked(FastPrintWriter.java:358)
at com.android.internal.util.FastPrintWriter.appendLocked(FastPrintWriter.java:303)
at com.android.internal.util.FastPrintWriter.write(FastPrintWriter.java:625)
at com.android.internal.util.FastPrintWriter.append(FastPrintWriter.java:658)
at java.io.PrintWriter.append(PrintWriter.java:691)
at java.io.PrintWriter.append(PrintWriter.java:31)
at java.lang.Throwable.printStackTrace(Throwable.java:324)
at java.lang.Throwable.printStackTrace(Throwable.java:300)
at android.util.Log.getStackTraceString(Log.java:343)
at com.android.internal.os.RuntimeInit.Clog_e(RuntimeInit.java:60)
at com.android.internal.os.RuntimeInit.access$200(RuntimeInit.java:44)
at com.android.internal.os.RuntimeInit$UncaughtHandler.uncaughtException(RuntimeInit.java:86)
at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:693)
at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:690)
答案 0 :(得分:0)
您的应用使用了太多内存。
使用NDK或者如果您需要在应用程序标记中的AndroidManifest.xml中使用更多的东西
android:largeHeap=true
https://developer.android.com/guide/topics/manifest/application-element.html
答案 1 :(得分:0)
这里的问题是您尝试显示的图像/位图太大了。通常在图像为1mb +时发生 更有效地显示位图 要解决此问题,您可以查看此信息 http://developer.android.com/training/displaying-bitmaps/index.html
答案 2 :(得分:0)
你对Volley的处理有多大?你的内存耗尽,因为Volley正试图在你的记忆中写一个36mb的字符串。
要么点击不同的终点返回较少的数据,要么调查使用支持流式传输响应的其他库。
(Volley不适合流式传输大量数据link)