我發現了一些關於Android垃圾收集器的信息,這些信息對我來說是矛盾的。Android垃圾收集器在運行時是否暫停其他應用程序?
的Android Devevelopers指南說:
Android 3.0的設計是對 無論是單核或多核處理器架構上運行的平臺的第一個版本。 Dalvik虛擬機,仿生庫和其他地方的各種 更改爲多核環境中的對稱多處理添加支持 。這些優化可以使所有應用程序都受益,即使那些單線程的應用程序也可以使用 。例如,對於兩個活動核心,如果Dalvik垃圾收集器在第二個核心上運行,單線程 應用程序仍可能會看到性能提升。該系統將安排這 自動「
好了,現在其他的事情
根據此鏈接:The Dalvik Virtual Machine Architecture Android使用標誌和清除的形式給出
目前的策略。 Dalvik垃圾收集器將保留標記 位或指示特定對象爲 「可到達」並因此不應被垃圾收集的位,單獨的來自其他堆內存的。
如果我們檢查標記和清除是如何工作的此鏈接: Mark and Sweep Garbage Collection Algorithm ,我們可以看到這一點:
標記和清除方法的主要缺點是, 那當垃圾收集算法運行時,正常程序執行被暫停。特別是,這可能是與人工用戶交互或必須滿足實時執行約束的 程序中的問題。例如,使用標記和掃描垃圾回收的交互式應用程序 將週期性地變爲無響應。
所以我現在的問題是,它是如何工作的?垃圾收集器在工作時是否暫停一切,還是他能夠在另一個活動處理器內核上完全獨立運行?