memory监控方法

Java:

(adb shell dumpsys meminfo x)堆内存用于存储对象实例和静态变量

Native:

Code:

加载app代码用到的内存:比如class对象,读取so,apk,dex文件时用到的mmap文件

Stack:

stack内存存放了栈帧(用于存储局部变量、操作数以及返回地址),每个方法调用都会创建一个栈,stack内存是虚拟机进程独有的

GPU显存(dmabuffer)

adb shell dumpsys meminfo 可以获取系统全部显存内存占用大小

adb shell dumpsys meminfo pid **-->**Graphics: 部分也可以获取到进程的显存占用

gpu显存的详细占用存放在如下文件中:/sys/kernel/debug/dma_buf/bufinfo

自动化shell脚本已上传附件

以上命令可查到进程memory占用大小,但查不到进程memory详细分布

发现内存高,内存泄露时如何抓取memory详细数据

Java:

抓hprof文件,自动化抓取脚本已上传附件(hprof文件分析方法后续文章有详细介绍)

Native:

抓native内存 推荐采用perfetto和raphael,都是开源的,都能抓到申请native内存的泄露栈,

perfetto适合抓取60s以内没有释放的native内存,raphael可以抓到长时间内存泄露栈(但准确性不好,一些复杂的app有crash,以及释放内存不准确的bug)

自动化抓取脚本已上传附件(raphael和perfetto memory文件分析方法后续文章有详细介绍)

Java,Native内存泄露的分析放在下一篇文章详细介绍,敬请期待

感谢您抽出宝贵时间读完本文,希望您有收获,能不能动动小手指给完❤再走?

相关推荐
写代码的学渣9 小时前
ubuntu 22.04 新装的系统 xshell 连不上
linux·运维·ubuntu
序属秋秋秋9 小时前
《Linux系统编程之进程环境》【环境变量】
linux·运维·服务器·c语言·c++·操作系统·系统编程
Aileen_0v09 小时前
【Gemini3.0的国内use教程】
android·人工智能·算法·开源·mariadb
云计算练习生10 小时前
linux shell编程实战 10 Git工具详解与运维场景实战
linux·运维·git
浩浩的代码花园10 小时前
自研端侧推理模型实测效果展示
android·深度学习·计算机视觉·端智能
虚伪的空想家12 小时前
KVM的ubuntu虚机如何关闭安全启动
linux·安全·ubuntu
踢球的打工仔16 小时前
PHP面向对象(7)
android·开发语言·php
安卓理事人16 小时前
安卓socket
android
t1987512818 小时前
在Ubuntu 22.04系统上安装libimobiledevice
linux·运维·ubuntu
skywalk816318 小时前
linux安装Code Server 以便Comate IDE和CodeBuddy等都可以远程连上来
linux·运维·服务器·vscode·comate