内存泄漏终极杀器:page_owner
发布网友
发布时间:2023-04-10 15:52
我来回答
共1个回答
热心网友
时间:2023-09-16 08:51
page owner用于跟踪每个页面的分配者。
可以用来调试内存泄漏或查找内存黑洞(uncount memory)。
当分配发生时,有关分配的信息(如调用堆栈和页面顺序)存储在每个页面的特定存储中。
当我们需要了解所有页面的状态时,我们可以获取并分析这些信息。
MTK:
CONFIG_PAGE_OWNER=y
CONFIG_PAGE_OWNER_SLIM=y
QCOM:
R之后的版本,还需要打开config中的debugfs
CONFIG_PAGE_OWNER=y
CONFIG_PAGE_OWNER_ENABLE_DEFAULT=y
怎么判断是否已经成功的开启page owner:
$adb shell "cat /sys/kernel/debug/page_owner"
如果存在就代表开启成功了。
抓取数据并过滤排序
adb root
adb push page_owner_sort /data
adb shell chmod 777 /data/page_owner_sort
adb shell "cat /sys/kernel/debug/page_owner > /data/page_owner_full.txt" //此为raw 数据
adb shell "grep -v ^PFN /data/page_owner_full.txt > /data/page_owner.txt" //过滤不必要数据, 空格等
adb shell "/data/page_owner_sort /data/page_owner.txt /data/sorted_page_owner.txt" //计数并排序
adb pull /data/sorted_page_owner.txt
检视分析 sorted_page_owner.txt