我从Google Play收到了我的Android应用程序的以下奇怪崩溃报告(请注意分配量与可用空间之间的差异)-
我知道Stack Overflow上有许多关于OutOfMemoryError的问题,但似乎没有一个是由比可用空间小得多的字节分配引起的。
用户在使用Android 5.0上的Galaxy S5时报告说,在玩游戏时(无论哪个游戏)会发生这样的崩溃 - 我认为每当他/她使用另一个内存密集型应用程序并且我的应用程序的后台服务被调度运行时都会发生这种情况。作为Google Play报告,我没有其他获取更多详细信息的方法。
我的问题是,可能会导致这种情况发生,以及应用程序可以采取哪些措施来避免它?
一些背景(如果这方面相关):上述崩溃来自我的应用程序定期计划的后台服务,不涉及任何UI /位图。它所做的一切就是从服务器下载数据并更新数据库/状态。在比现代Android手机标准要少得多的RAM的5年旧机器上运行而没有任何问题,应该根据现代Android手机的标准非常轻便。上述错误实例发生在数据库更新和服务将更新的状态写入共享首选项之后的某个时间点。
编辑:刚刚阅读了与此问题发布后链接到的OutOfMemoryError in android on allocation 4Mb when 10Mb is free,但似乎可用空间可以在这种情况下如此分散是相当不可能的?是否有其他可能的原因?
java.lang.OutOfMemoryError: Failed to allocate a 16396 byte allocation with 5746272 free bytes and 111MB until OOM
at com.android.internal.util.FastXmlSerializer.<init>(FastXmlSerializer.java:55)
at com.android.internal.util.XmlUtils.writeMapXml(XmlUtils.java:183)
at android.app.SharedPreferencesImpl.writeToFile(SharedPreferencesImpl.java:597)
at android.app.SharedPreferencesImpl.access$800(SharedPreferencesImpl.java:51)
at android.app.SharedPreferencesImpl$2.run(SharedPreferencesImpl.java:512)
at android.app.SharedPreferencesImpl.enqueueDiskWrite(SharedPreferencesImpl.java:533)
at android.app.SharedPreferencesImpl.access$100(SharedPreferencesImpl.java:51)
at android.app.SharedPreferencesImpl$EditorImpl.commit(SharedPreferencesImpl.java:455)
at com.headuck.headuckblocker.bj.a(Unknown Source)
at com.headuck.headuckblocker.UpdateService.e(Unknown Source)
at com.headuck.headuckblocker.UpdateService.a(Unknown Source)
at x.a.onHandleIntent(Unknown Source)
at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:145)
at android.os.HandlerThread.run(HandlerThread.java:61)
我知道Stack Overflow上有许多关于OutOfMemoryError的问题,但似乎没有一个是由比可用空间小得多的字节分配引起的。
用户在使用Android 5.0上的Galaxy S5时报告说,在玩游戏时(无论哪个游戏)会发生这样的崩溃 - 我认为每当他/她使用另一个内存密集型应用程序并且我的应用程序的后台服务被调度运行时都会发生这种情况。作为Google Play报告,我没有其他获取更多详细信息的方法。
我的问题是,可能会导致这种情况发生,以及应用程序可以采取哪些措施来避免它?
一些背景(如果这方面相关):上述崩溃来自我的应用程序定期计划的后台服务,不涉及任何UI /位图。它所做的一切就是从服务器下载数据并更新数据库/状态。在比现代Android手机标准要少得多的RAM的5年旧机器上运行而没有任何问题,应该根据现代Android手机的标准非常轻便。上述错误实例发生在数据库更新和服务将更新的状态写入共享首选项之后的某个时间点。
编辑:刚刚阅读了与此问题发布后链接到的OutOfMemoryError in android on allocation 4Mb when 10Mb is free,但似乎可用空间可以在这种情况下如此分散是相当不可能的?是否有其他可能的原因?