最近,我從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. 在AngularJS指令中使用replace = true有什麼缺點嗎?
- 2. 使用Maven有什麼優點/缺點?
- 3. 使用SOAP服務有什麼缺點?
- 4. 使用git-svn有什麼優缺點?
- 5. 使用SqlServer視圖有什麼缺點?
- 6. 使用StringBuilder有什麼缺點?
- 7. 使用NewSequentialID有什麼缺點嗎?
- 8. 使用AVL樹有什麼缺點?
- 9. largeHeap = true清單標籤不起作用?
- 10. 在Android API上使用JQTouch/Phonegap有什麼缺點?
- 11. 在android中使用private api有什麼缺點?
- 12. ConcurrentHashMap有什麼缺點嗎?
- 13. Typed DataSet有什麼缺點
- 14. Apache Wicket有什麼缺點?
- 15. std :: reverse_iterator有什麼缺點?
- 16. VistaDB有什麼缺點
- 17. H264有什麼缺點?
- 18. Android中sendSticyBroadcast()的缺點是什麼?
- 19. 啓用git rerere有什麼缺點嗎?
- 20. 根據設備將android largeheap等同爲true
- 21. 使用iPhone/Android手機編寫腳本有什麼優點和缺點?
- 22. has_many和has_one,有什麼優點/缺點?
- 23. py2exe有什麼優點/缺點
- 24. 使用交叉遺傳算子有什麼優點和缺點?
- 25. 使用IOC容器有什麼優點和缺點?
- 26. 使用flags枚舉有什麼優點和缺點?
- 27. 使用Docker Vs Vanilla LXC有什麼優點和缺點?
- 28. 使用Meteor-Roles有什麼優點和缺點?
- 29. 使用數據服務層有什麼優點和缺點?
- 30. Backbone.js使用小鬍子有什麼優點/缺點?