我有错误:
java.lang.StackOverflowError: stack size 8MB
at android.os.MessageQueue.nativePollOnce(Native Method)
at android.os.MessageQueue.next(MessageQueue.java:143)
at android.os.Looper.loop(Looper.java:195)
at android.app.ActivityThread.main(ActivityThread.java:5373)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1020)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:815)
和
java.lang.StackOverflowError: stack size 8MB
at android.view.ThreadedRenderer.nInitialize(Native Method)
at android.view.ThreadedRenderer.initialize(ThreadedRenderer.java:147)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1649)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1065)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5901)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767)
at android.view.Choreographer.doCallbacks(Choreographer.java:580)
at android.view.Choreographer.doFrame(Choreographer.java:550)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:211)
at android.app.ActivityThread.main(ActivityThread.java:5373)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1020)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:815)
我没有想法,是什么导致他们。这些错误可以随时抛出。 我从用户的设备上获得的这些痕迹,我不能用我的那些重复。 你有什么假设吗?
注意!堆栈跟踪中没有我的方法!只有Android / Java!
答案 0 :(得分:0)
java.lang.StackOverflowError: stack size 8MB
当Java应用程序调用函数调用时,堆栈框架 在调用堆栈上分配。堆栈框架包含 调用方法的参数,其本地参数和返回值 方法的地址。返回地址表示执行点 从中调用后,程序执行将继续执行 方法返回。如果没有新的堆栈框架的空间那么, Java虚拟机(JVM)抛出StackOverflowError。
最简单的解决方案是仔细检查堆栈跟踪并检测行号的重复模式。这些行号表示递归调用的代码。一旦检测到这些行,就必须仔细检查代码并理解递归永远不会终止的原因。
如果您已验证正确实现了递归,则可以增加堆栈的大小,以允许更多的调用。根据安装的Java虚拟机(JVM),默认线程堆栈大小可能等于512KB或1MB。
为了更好Info。
http://docs.oracle.com/javase/7/docs/api/java/lang/StackOverflowError.html