当前位置:首页 > 内存 > 正文

android内存占用分析app(安卓10开机内存占用)

  • 内存
  • 2024-06-11 15:12:28
  • 6196

一、Android内存的相关排查方法

dumpsysmeminfo是Android系统提供的内存查询命令,可以使用该命令查看:
各个进程占用的物理内存大小
系统内存分配的状态,包括
可用物理内存量MemoryTotalRAM
当前可用物理内存FreeRAM
已用物理内存UsedRAM
不可见内存LostRAM

例如,输入此命令后,会出现以下日志输出为:

此命令打印的最后一部分描述了系统级内存状态:
TotalRAM:1015868kB
FreeRAM:638914kB(105418cachedpss+180168cached+353328free)
已用RAM:211428kB(186096usedpss+8008buffers+520shmem+16804slab)
LostRAM:165526kB
调整:96(big256),oom20480kB,restorelimit682-of-some
dumpsysmeminfo

OOMKiller(OutOfMemoryKiller)是Linux中的一种内存保护机制。当物理内存不足并且需要分配新内存时,一些低优先级进程将被关闭以释放内存。
LowMemoryKiller是Android的内存保护机制。当物理内存低于阈值时,一些低优先级进程将被关闭以释放内存。

联系:LowMemoryKiller采用OOMKiller评分机制
区别:LowMemoryKiller由阈值触发,内存分配失败时触发OOMKiller

评分原理:
oom_adj,代表进程的优先级,值越大,优先级越低,越容易被杀死。系统分为16级(取值范围[-16,15]整数,不连续)
通过cat/proc/xxx/oom_adj查找,其中xxx为进程号
oom_score_adj:基于oom_adjScore,范围值[-1000,1000]
通过cat/proc/xxx/oom_score_adj查看,其中xxx为进程号

阈值显示,以98mv100为例:
cat/sys/module/lowmemorykiller/parameters/minfree
1024,1536,2048,3072,3584,4096
cat/sys/module/lowmemorykiller/parameters/adj
0,58,117,176,5029,br/>值诉求是指:当可用内存低于40964K时,关闭oom_score_adj>=1000的应用程序;当可用内存低于35844K时,关闭oom_score_adj>=529的应用程序,以此类推。

因此,客户可以调整minfree阈值,以更频繁地触发LowMemoryKiller杀死应用程序,从而为高优先级应用程序节省内存。

在dumpsysmeminfo中,GPU内存被计入LostRAM中。

因此,当应用程序占用GPU内存过多时,它不会显示在UsedRAM中,而是会显示在LostRAM中。另一方面,如果出现问题时发现LostRAM非常高,则需要查看GPU内存使用情况。使用以下命令:
mount-tdebugfsdebugfs/sys/kernel/debug/
cat/sys/kernel/debug/mali/gpu_memory

130|root@MR820:/#cat/sys/kernel/debug/mali/gpu_memory
Name(:byte)pidmali_memmax_mali_memexternal_memump_memdma_mem

mali_mem列是应用程序占用的GPU内存