最近,我从100 MB减少我的应用程序的最大内存峰值为45 MB,我很好奇什么是使用了Android的缺点:largeHeap =“真” 比潜力其他推其他应用程序进行的记忆?例如,如果大小不足以证明推送其他应用程序是不合适的,例如,如果您的应用程序仅在会议中使用了四天才会发生崩溃,则会导致灾难性后果?或者还有其他一些我正在看的过去?使用android有什么缺点:largeHeap =“true”?
回答
从我的理解,这一切真的会做的是让你的应用程序更高的内存限制 - 在largeHeap尺寸设备之间的区别的,所以你不能保证的额外内存的特定量。我们将其用于我们的应用之一,因为它将是设备上唯一运行的应用程序。
由于this training guide指出,
“使用额外的内存会越来越多地以整体用户体验的损害,因为垃圾回收将需要更长的时间,当任务切换系统性能可能会较慢或执行其他常见操作。“
我认为这是一个非常有效的问题,让我补充一些额外的解释。
1)较长的垃圾收集时间:
很难衡量有多少额外的时间将采取更大的堆。因为很多事情都会影响垃圾收集时间。使用哪个Android运行时(Dalvik或ART)影响垃圾收集时间(您可以在here上查看更多内容)。垃圾收集在different Android version上执行的方式也不同。但可以肯定的是,较大的堆会使垃圾收集耗时更长。因为垃圾收集器基本上必须遍历整个活动的对象集合。如果您好奇,可以在2011 Google I/O的Memory management for Android Apps会话中了解有关此主题的更多信息。正如本次会议的幻灯片所述,垃圾收集暂停时间大约为5毫秒。你可能会认为几毫秒不是什么大不了的事,但是每一毫秒都算。 Android设备必须每隔16 ms更新其屏幕,并且更长的GC时间可能会将帧处理时间延长至16毫秒的屏障,这可能会导致可见的挂接。
2)慢任务切换:
至于解释here,
系统可以杀死在LRU缓存中最近最少使用的过程中开始的流程,还给予一定的考虑朝哪些进程的内存密集度最高。
所以如果你使用更大的堆,你的过程将更有可能被当它转到后台运行,这意味着它可能需要更长的时间,当用户想要从其他应用程序到您的切换杀害。当进程处于前台时,后台进程将更有可能被踢出,因为你的应用需要更大的内存。这意味着从您的应用切换到其他应用也需要更长的时间。这显然对用户不利。
- 1. 使用Maven有什么优点/缺点?
- 2. largeHeap = true清单标签不起作用?
- 3. 使用SOAP服务有什么缺点?
- 4. 使用git-svn有什么优缺点?
- 5. 使用SqlServer视图有什么缺点?
- 6. 使用AVL树有什么缺点?
- 7. ConcurrentHashMap有什么缺点吗?
- 8. VistaDB有什么缺点
- 9. Typed DataSet有什么缺点
- 10. Apache Wicket有什么缺点?
- 11. std :: reverse_iterator有什么缺点?
- 12. H264有什么缺点?
- 13. 根据设备将android largeheap等同为true
- 14. 启用git rerere有什么缺点吗?
- 15. 使用iPhone/Android手机编写脚本有什么优点和缺点?
- 16. has_many和has_one,有什么优点/缺点?
- 17. py2exe有什么优点/缺点
- 18. Backbone.js使用小胡子有什么优点/缺点?
- 19. 使用Meteor-Roles有什么优点和缺点?
- 20. 使用`select table_name。*`有什么优点和缺点?
- 21. 使用Castle Active Record vs Straight NHibernate有什么优点和缺点?
- 22. 使用数据服务层有什么优点和缺点?
- 23. 使用IOC容器有什么优点和缺点?
- 24. 使用Docker Vs Vanilla LXC有什么优点和缺点?
- 25. 使用D指针有什么优点和缺点?
- 26. 使用LOGO的缺点/缺点是什么?
- 27. 使用P/Invoke的缺点是什么
- 28. 使用Shadow DOM的缺点是什么?
- 29. 有很多指数有什么缺点?
- 30. static :: vs. self :: - 有没有什么缺点?