【发布时间】:2014-07-16 22:58:53
【问题描述】:
我在 Android 上使用 Crittercism 记录崩溃,但不幸的是它没有捕获所有崩溃。很多错过的崩溃是OutOfMemoryExceptions,但并非所有 OOM 异常都被遗漏。我无法弄清楚它何时被抓住以及何时不被抓住的任何模式!有人碰巧知道为什么会发生这种情况或解决方法吗?
【问题讨论】:
标签: android crittercism
我在 Android 上使用 Crittercism 记录崩溃,但不幸的是它没有捕获所有崩溃。很多错过的崩溃是OutOfMemoryExceptions,但并非所有 OOM 异常都被遗漏。我无法弄清楚它何时被抓住以及何时不被抓住的任何模式!有人碰巧知道为什么会发生这种情况或解决方法吗?
【问题讨论】:
标签: android crittercism
缺少内存不足异常的原因是 JVM 处理某些场景与其他场景的性质不同。
我没有 JVM 善意掩盖的场景列表(即,不暴力杀死应用程序进程),但在这些情况下,Crittercism 可以正常运行并捕获 Java Out of Memory 异常。在 JVM 剧烈崩溃的另一种情况下,Crittercism 将难以捕获(但据我目前所知,没有崩溃报告器处理过这个问题)。
至于 OOM 之外的其他场景,这里有另外两个 Crash Reporters(不仅仅是 Crittercism)难以捕捉的场景:
App Not Responding 是另一种情况,即操作系统终止进程并且没有任何东西可以运行或完成。因此,崩溃记者无法捕捉到这一刻。
Stack Overflow 是应用程序进入损坏状态并且操作系统终止进程的情况。虽然我不是 100% 在这种情况下。
话虽如此,在 Android 上,Crittercism 是少数提供远程 NDK 异常跟踪的公司之一,该跟踪将在 JVM 崩溃时捕获(即 Dalvik 本机异常/信号)。但正如我上面提到的,它没有 JVM 托管内存的优点,因此崩溃更加不稳定,OOM 会被遗漏。
希望对您有所帮助!
【讨论】: