我試圖理解爲什麼Android的GC的行爲方式是這樣,Android的GC行爲
- VM堆設置爲512 MB
Runtime.getRuntime maxMemory
爲512 MBRuntime.getRuntime totalMemory
是13 MBRuntime.getRuntime freeMemory
是3 MB
我總是在這些值的+/- 2-3 MB內。
我的代碼是功能性的,所以我用了很多對象,但我沒有在附近512 MB但我經常看到GC電話在我的logcat尤其是在緊密的循環。爲什麼它不會讓堆積累?和GC以小增量,而不是每隔300 ms就暫停我的應用程序。
有什麼辦法讓我對垃圾收集過程有更多的控制(這不會是一個市場應用程序,我沒有安裝自定義ROM的問題)除了股票答案正在改變你的編碼風格不創建大量的對象,因爲我看到一個真正的設備(四1,2 GHz的機器具有2 GB時,沒有其他應用程序正在運行,RAM的一個類似的水煤漿是一種惱人的有一臺機器這個強大的,而不是能夠代碼我喜歡的方式。)