收到错误“java.lang.StackOverflowError:堆栈大小 1036KB”和 OutOfMemory

Dar*_*edi 7 java stack-overflow android bitmap

我正在使用一个完全处理图像和视频的应用程序。我将设备的所有图像和视频存储到应用程序数据库中,并且此任务在后台服务中执行。在此过程之间,我正在检查使用getFacesFromBitmap(mBitmap).

问题是有时我收到错误java.lang.StackOverflowError: stack size 1036KB,有时我收到 OOM 错误。

那么有没有最好的方法来解决这个问题?

Gha*_*yth 7

StackOverflowError 通常是由于堆栈大小过大(相互调用的方法太多)引起的

有时它是由递归调用自己的方法引起的(想象一个方法永远调用自己!)。

解决问题取决于它是由程序错误引起的,还是只是应用程序的最大堆栈大小限制不足。

我建议你检查你的代码是否有递归调用,并确保没有方法会无休止地调用自己。

另一个选项(在您确保您的代码没有问题之后)是增加程序的堆栈大小,例如:Tomcat 有一个名为“-Xss”的参数可用于调整最大堆栈大小,请检查下方链接:

http://www.tomcatexpert.com/blog/2011/11/22/performance-tuning-jvm-running-tomcat