为什么我的Android应用程序会在我的手机上持续崩溃,但不会在我的模拟器上崩溃

为什么我的Android应用程序会在我的手机上持续崩溃,但不会在我的模拟器上崩溃,android,memory,garbage-collection,crash,heap,Android,Memory,Garbage Collection,Crash,Heap,我有一个应用程序,它使用了相当多的图形 当我在emulator(1.5-2.2)上反复打开和关闭我的应用程序时,它运行良好,通过检查堆,我可以看到所有的东西都被清理干净了,gc也正常运行 然而,当我在HTC Aria手机(2.1)上运行我的应用程序时,每当我试图重新打开它时,应用程序就会崩溃。当我查看堆时,我可以看到对象没有像在模拟器中那样被清理 有人知道为什么会发生这种行为吗?我确实在另一部HTC Aria(朋友)上试用过它,它的崩溃方式与我的手机相同,所以我认为它不仅仅与我的特定手机隔离 如

我有一个应用程序,它使用了相当多的图形

当我在emulator(1.5-2.2)上反复打开和关闭我的应用程序时,它运行良好,通过检查堆,我可以看到所有的东西都被清理干净了,gc也正常运行

然而,当我在HTC Aria手机(2.1)上运行我的应用程序时,每当我试图重新打开它时,应用程序就会崩溃。当我查看堆时,我可以看到对象没有像在模拟器中那样被清理

有人知道为什么会发生这种行为吗?我确实在另一部HTC Aria(朋友)上试用过它,它的崩溃方式与我的手机相同,所以我认为它不仅仅与我的特定手机隔离

如果您有任何想法或想法,我将非常感激,为什么在模拟器上,而不是在我的手机上,一切都正常。有一件事需要注意的是,几天前我的手机上的gc'ing功能正常,我没有做太多改变,现在手机上的gc'ing功能不正常,所以这对我来说有点神秘

谢谢

注:

崩溃是由OutOfMemory异常引起的。我正在预加载一些图形,内存不足,无法同时运行应用程序的两个实例,因此它会崩溃,因为应用程序的第一个实例未正确清理。

您有多个模拟器,都只运行此应用程序,关闭它,然后重新启动它。 您的Android设备有多个进程同时运行,如后台同步、Facebook通知、Twitter通知、日历同步、联系人同步等

一种方法是尝试在不同的模拟器上模拟Android设备的状态,看看是否可以在模拟器上得到相同的错误。使用一些在后台同步的应用程序和其他占用大量内存的应用程序。然后你就有了一个模拟真实世界的测试环境,你可以将你的应用程序更改到不会崩溃的状态。也许尽可能缩小图像的大小以减少内存使用


请记住,您永远不能强制Garbace收集器启动。您只能告诉系统可以收集此垃圾。

崩溃后显示stacktrace您在某处有静态资源吗?或者是singleton的静态实例,它甚至在活动关闭后仍保存整个应用程序?清除onDestroy()中的所有引用,可能会有所帮助。我没有任何静态资源,只有一些用于状态机的静态int。还有其他想法吗?这是我没有想到的一个非常好的观点。谢谢