Android卡頓丟幀低內存與adb shell內存狀態
?
?
卡頓丟幀除了CPU/GPU層面,另外,也需要特別注意整機低內存情況。kswapd0 是一個內核工作線程,內存不足時會被喚醒,做內存回收工作。 當內存頻繁在低水位的時候,kswapd0 會被頻繁喚醒,占用 cpu ,造成卡頓和耗電。通常kswapd0占用大核,而且是滿頻在跑,耗電、溫升,如果此時有前臺應用主線程跑到與kswapd0相同的核上,很大可能會出現 cpu 競爭,導致調度不到而丟幀卡頓。HeapTaskDaemon 通常也會在低內存時候跑的很高。
?
adb shell dumpsys meminfo
導出內存狀況。
?
adb shell free
?free輸出的total、free分別與/proc/meminfo中的MemTotal、MemFree對應。
adb shell cat /proc/meminfo
當系統處于低內存的情況時候 , MemFree 和 MemAvailable 的值都很小。
MemTotal:內存總數
可以簡單理解為總內存。
MemFree:空閑內存數
表示系統尚未使用的內存。MemUsed=MemTotal-MemFree,是已被用掉的內存。
Cached:緩存區內存數
當你讀寫文件的時候,Linux內核為了提高讀寫性能與速度,會將文件在內存中進行緩存,也就是Cache Memory(緩存內存)。這會導致系統中程序頻繁讀寫文件后,可用物理內存會很少。
MemAvailable:可用內存數
應用程序可用內存數。系統中有些內存雖然已被使用但是可以回收的,比如cache/buffer,有一部分可以回收,所以MemFree不能代表全部可用的內存,這部分可回收的內存加上MemFree才是系統可用的內存,即:MemAvailable ≈ MemFree + Buffers + Cached,是一個估計值。
?
?
?
Android內存占用查看 adb shell top -m 10-CSDN博客文章瀏覽閱讀2.2k次。Android內存占用查看 adb shell top -m 10_top -m 10https://blog.csdn.net/qq_43667944/article/details/87559607
?