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