安卓内存泄露之DMA-BUF异常增长:Android Studio镜像引起DMA内存泄露
安卓内存泄露之DMA-BUF异常增长:Android Studio镜像引起DMA内存泄露 - Wesley’s Blog
今天用着安卓 14 的板子的时候突然系统卡死。
查看日志发现launcher都被干掉了
03-04 06:13:35.544 7872 8479 I ActivityManager: vis BFGS 18740: com.android.launcher3 (pid 8407) service
03-04 06:13:35.544 7872 8479 I ActivityManager: com.android.launcher3/com.android.quickstep.TouchInteractionService<=Proc{8077:com.android.systemui/u0a70}
03-04 06:13:36.155 277 277 I lowmemorykiller: Kill ‘com.android.launcher3’ (8407), uid 10071, oom_score_adj 100 to free 39504kB rss, 46224kB swap; reason: device is low on swap (91200kB < 199552kB) and thrashing (200%)
看dumpsys meminfo发现DMA-BUF占了3G多(4G设备),应用free ram基本没了。
刚开始以为是scrcpy的问题。后来经调查发现是android studio的屏幕镜像问题。
分析
开机一段时间后
Total RAM: 3,991,080K (status normal)
Free RAM: 1,166,810K ( 124,454K cached pss + 623,088K cached kernel + 419,268K free)
DMA-BUF: 1,477,628K ( 876K mapped + 1,476,752K unmapped)
DMA-BUF Heaps: 1,477,628K
DMA-BUF Heaps pool: 249,088K
GPU: 202,320K
Used RAM: 2,763,593K (1,036,373K used pss + 1,727,220K kernel)
Lost RAM: 195,490K
ZRAM: 72,700K physical used for 215,296K in swap (1,995,536K total swap)
Tuning: 192 (large 512), oom 322,560K, restore limit 107,520K (high-end-gfx)
cat /sys/kernel/dmabuf/buffers/*/size,发现有好多483328字节的 inode
cat /sys/kernel/dmabuf/buffers/*/size | grep 483328 | wc -l
有2957个,计算:2957*483328=1429200896=1.4G,和上面的结果差不多。
随便查看一个inode
roc_rk3588s_pc:/ # lsof | grep -w 7248
c2@1.1-service 543 mediacodec 2553u 0000 0,8 0t0 7248 /dmabuf:system
main 4146 root 5088u 0000 0,8 0t0 7248 /dmabuf:system
main 4146 root 5089u 0000 0,8 0t0 7248 /dmabuf:system
lsof | grep "4146" | grep dmabuf | wc -l
有2958条这样的条目
main 4146 root 5973u 0000 0,8 0t0 7690 /dmabuf:system
和上面的数目一一对应
查看是哪一个程序
roc_rk3588s_pc:/ # cat /proc/543/cmdline
/vendor/bin/hw/android.hardware.media.c2@1.1-service
roc_rk3588s_pc:/ # cat /proc/4146/cmdline
app_process/data/local/tmp/.studiocom.android.tools.screensharing.Main–socket=screen-sharing-agent-8055–flags=16
发现是android studio镜像导致的:应该是因为一直黑屏导致反复申请内存导致DMA-BUF泄露。
关闭Android Studio的Device Mirroring功能后,后面使用设备就正常了。

dmabuf_dump
通过dmabuf_dump命令可以更快地查看异常程序
roc_rk3588s_pc:/ # dmabuf_dump -h
Usage: dmabuf_dump [-abh] [per-process/per-buffer stats]
-a show all dma buffers (ion) in big table, [buffer x process] grid
-b show DMA-BUF per-buffer, per-exporter and per-device statistics
-h show this help
If PID is supplied, the dmabuf information for that process is shown.
Per-buffer DMA-BUF stats do not take an argument.
通过dmabuf_dump就可以查看各个程序DMA-BUF的占用情况(包含程序名字、pid、inode等等)或者加其他参数输出不同结果。
roc_rk3588s_pc:/ # dmabuf_dump 4146
main:4146
Name Rss Pss nr_procs Inode
system 472 kB 472 kB 1 4735
system 472 kB 472 kB 1 4736
system 472 kB 472 kB 1 4737
------------------(省略几千行)----------------
system 472 kB 472 kB 1 7688
system 472 kB 472 kB 1 7689
system 472 kB 472 kB 1 7690
PROCESS TOTAL 1395232 kB 1395232 kB
----------------------
dmabuf total: 1477628 kB kernel_rss: 82396 kB userspace_rss: 1395232 kB userspace_pss: 1395232 kB
参考
Implement DMABUF and GPU memory accounting in Android 12 | Android Open Source Project
相关文章:
安卓内存泄露之DMA-BUF异常增长:Android Studio镜像引起DMA内存泄露
安卓内存泄露之DMA-BUF异常增长:Android Studio镜像引起DMA内存泄露 - Wesley’s Blog 今天用着安卓 14 的板子的时候突然系统卡死。 查看日志发现launcher都被干掉了 03-04 06:13:35.544 7872 8479 I ActivityManager: vis BFGS 18740: com.android.launcher3 (pid 8407) se…...
android13打基础: 控件checkbox
测试checkbox的activity // todo: 高级控件checkbox public class Ch4_CheckBoxActivity extends AppCompatActivityimplements CompoundButton.OnCheckedChangeListener {Overrideprotected void onCreate(Nullable Bundle savedInstanceState) {super.onCreate(savedInstance…...
AI应用测试:遇到类ChatGPT的流式接口要如何压测?
先说结论: 使用最普遍的JMeter 就能支持类 OpenAI 的流式接口(如 ChatGPT 的流式聊天接口)的测试 总体设置 JMeter 支持测试 OpenAI 的流式接口,但需要额外配置(如启用 KeepAlive 和调整超时)。如果需要实时处理流式响应,使用 Regular Expression Extractor 或自定义脚…...
React面试葵花宝典之二
36.Fiber的更新机制 React Fiber 更新机制详解 React Fiber 是 React 16 引入的核心架构重构,旨在解决可中断渲染和优先级调度问题,提升复杂应用的流畅性。其核心思想是将渲染过程拆分为可控制的工作单元,实现更细粒度的任务管理。以下是其…...
在日常生活、工作中deepseek能帮我们解决哪些问题
在日常生活、工作中deepseek能帮我们解决哪些问题 DeepSeek极大降低了普通人使用AI的门槛,让AI快速渗透到人们的工作和生活中,无论是专业场景提效、教育学术赋能、商业创新甚至日常生活,都变得更加轻松。 当然这篇文章也参考了deepseek的回…...
【Java】IO流
Java IO流是Java中处理输入输出的核心机制,通过不同的流类型实现了对数据的高效读写。 一、IO流的分类 1. 按数据方向 输入流(Input Stream):从数据源(如文件、网络等)读取数据。输出流(Outp…...
HTML第三节
一.初识CSS 1.CSS定义 A.内部样式表 B.外部样式表 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title&g…...
Visual Studio 2022安装问题解决,提示无法安装Microsoft.VisualStudio.Community.Msi
表现现象为:安装完后提示无法安装Microsoft.VisualStudio.Community.Msi,无法正常开发C项目 查看日志,大概显示: xxx ReturnCode1316 xxxxx 消息详细信息: 指定的帐户已存在。 试了网上所有的办法都没用,反复尝试&…...
【代码分享】基于IRM和RRT*的无人机路径规划方法详解与Matlab实现
基于IRM和RRT*的无人机路径规划方法详解与Matlab实现 1. IRM与RRT*的概述及优势 IRM(Influence Region Map)通过建模障碍物的影响区域,量化环境中的安全风险,为RRT算法提供启发式引导。RRT(Rapidly-exploring Random…...
MybatisPlus从入门到精通
一、MyBatis-Plus核心特性 无侵入性 在MyBatis基础上增强,无需修改原有代码即可使用。自动化CRUD 内置通用Mapper和Service,减少80%单表操作代码。Lambda表达式 支持Lambda形式的条件构造,避免字段名硬编码错误。主键策略 支持雪花算法&…...
el-table input textarea 文本域 自适应高度,切换分页滚动失效处理办法
场景: el-table 表格 需要 input类型是 textarea 高度是自适应,第一页数据都是单行数据 不会产生滚动条,但是第二页数据是多行数据 会产生滚动条, bug: 第一页切换到第二页 第二页滚动条无法展示 解决办法:直接修改样…...
基于Windows11的DockerDesktop安装和布署方法简介
基于Windows11的DockerDesktop安装和布署方法简介 一、下载安装Docker docker 下载地址 https://www.docker.com/ Download Docker Desktop 选择Download for Winodws AMD64下载Docker Desktop Installer.exe 双点击 Docker Desktop Installer.exe 进行安装 测试Docker安装是…...
ffmpeg源码编译支持cuda
1.安装cuda CUDA Toolkit 11.3 Downloads | NVIDIA Developer 在选择组件的时候,将CUDA中的Nsight VSE和Visual Studio Integration取消勾选 不然会安装失败 2.编译ffmpeg 把cuda编译宏定义开启,再编译avcodec 3.编译livavutil报错struct "Cuda…...
动漫短剧开发公司,短剧小程序搭建快速上线
在当今快节奏的生活里,人们的娱乐方式愈发多元,而动漫短剧作为新兴娱乐形式,正以独特魅力迅速崛起,成为娱乐市场的耀眼新星。近年来,动漫短剧市场呈爆发式增长,吸引众多创作者与观众目光。 从市场规模来看…...
《2025软件测试工程师面试》接口测试篇
基础概念 什么是接口测试? 接口测试是测试系统组件间接口的一种测试,主要用于检测外部系统和内部系统之间以及各个子系统之间的交互点。测试的重点是检查数据的交换、传递和控制管理的过程,以及系统间的相互逻辑依赖关系等。 接口测试的优势是什么? 接口测试具有规范性与扩…...
嵌入式学习第二十三天--网络及TCP
进程通信的方式: 同一主机 传统 system V 不同主机 网络 --- 解决不同主机间 的进程间通信 网络 (通信) //1.物理层面 --- 联通(通路) //卫星 2G 3G 4G 5G 星链 (千帆) //2.逻辑层面 --- 通路(软件) MAC os LINUX …...
Elasticsearch:解锁深度匹配,运用Elasticsearch DSL构建闪电般的高效模糊搜索体验
目录 Elasticsearch查询分类 叶子查询 全文检索查询 match查询 multi_match查询 精确查询 term查询 range查询 复杂查询 bool查询简单应用 bool查询实现排序和分页 bool查询实现高亮 场景分析 问题思考 解决方案 search_after方案(推荐) point in time方案 方案…...
SQLAlchemy系列教程:基本数据类型及自定义类型
在SQLAlchemy、Python SQL工具包和ORM中定义模型时,理解基本数据类型至关重要。本教程提供了在SQLAlchemy模型中有效使用内置基本类型的指南。 SQLAlchemy中的基本类型 SQLAlchemy支持一组与SQL数据库类型一致的基本数据类型。SQLAlchemy中的每种类型都为各种SQL类…...
【Wireshark 02】抓包过滤方法
一、官方教程 Wireshark 官网文档 : Wireshark User’s Guide 二、显示过滤器 2.1、 “数据包列表”窗格的弹出过滤菜单 例如,源ip地址作为过滤选项,右击源ip->prepare as filter-> 选中 点击选中完,显示过滤器&#…...
ES怎么查询大于10000条数据
在Elasticsearch(ES)中,默认情况下,查询结果的最大返回条数是10,000条。如果你需要查询超过10,000条数据,可以通过以下几种方式来实现: 1. 使用 scroll API scroll API 适用于需要处理大量数据的场景&…...
上海优质seo公司推荐_上海seo公司的优势在哪里
<h3 id"seo_seo">上海优质seo公司推荐_上海seo公司的优势在哪里</h3> <p>在当今互联网营销的时代,SEO(搜索引擎优化)已经成为企业提升网站流量、品牌知名度的重要手段。特别是在经济发达的大都市上海,…...
零代码驯服Qwen-2.5VL:LLaMA-Factory图形界面实战指南
1. 为什么你需要零代码驯服Qwen-2.5VL 想象一下,你手里有一台能看懂图片的AI机器人,但它总把工业零件认成厨房用具。传统解决方法需要你租用几十张显卡,像炼丹一样折腾几个月——但现在,有了LLaMA-Factory的图形界面,这…...
跨平台文件同步:OpenClaw调用GLM-4.7-Flash智能归类方案
跨平台文件同步:OpenClaw调用GLM-4.7-Flash智能归类方案 1. 为什么需要智能文件同步 作为一个长期在多台设备间切换工作的开发者,我深受文件管理混乱的困扰。Mac上的设计稿、Windows里的会议记录、手机拍摄的参考图,最终都会堆积在某个临时…...
为什么你的Jenkins构建结果不可靠?可能是工作区没清理!
为什么你的Jenkins构建结果不可靠?可能是工作区没清理! 在持续集成(CI)的实践中,Jenkins作为自动化构建的核心工具,其稳定性直接影响着开发团队的交付效率。然而,许多开发者都曾遇到过这样的困惑…...
基于SpringBoot + Vue的垃圾分类回收网站(角色:用户、回收人员、管理员)
文章目录前言一、详细操作演示视频二、具体实现截图三、技术栈1.前端-Vue.js2.后端-SpringBoot3.数据库-MySQL4.系统架构-B/S四、系统测试1.系统测试概述2.系统功能测试3.系统测试结论五、项目代码参考六、数据库代码参考七、项目论文示例结语前言 💛博主介绍&#…...
AD5660 16位DAC驱动库深度解析:嵌入式SPI接口实践
1. AD5660 数字模拟转换器库深度解析:面向嵌入式工程师的16位高精度DAC驱动实践1.1 器件本质与工程定位AD5660 是 Analog Devices 推出的单通道、16位电压输出型数模转换器(DAC),采用紧凑的 8 引脚 MSOP 封装,专为对精…...
24小时运行不掉线:OpenClaw+GLM-4.7-Flash监控告警方案
24小时运行不掉线:OpenClawGLM-4.7-Flash监控告警方案 1. 为什么需要自动化监控告警 去年夏天的一个深夜,我负责维护的某个内部服务突然崩溃。直到第二天早上用户反馈才发现问题,整整8小时的服务中断让我意识到:人工巡检存在天然…...
ib_insync与pandas集成:金融数据分析的完整解决方案
ib_insync与pandas集成:金融数据分析的完整解决方案 【免费下载链接】ib_insync Python sync/async framework for Interactive Brokers API 项目地址: https://gitcode.com/gh_mirrors/ib/ib_insync 想要在Python中高效处理Interactive Brokers的金融数据吗…...
PDF-Guru安全防护指南:从威胁识别到主动防御
PDF-Guru安全防护指南:从威胁识别到主动防御 【免费下载链接】PDF-Guru A Multi-purpose PDF file processing tool with a nice UI that supports merge, split, rotate, reorder, delete, scale, crop, watermark, encrypt/decrypt, bookmark, extract, compress,…...
解决k8s集群中containerd运行时拉取HTTP私有Harbor镜像的配置难题
1. 为什么需要配置HTTP私有Harbor镜像拉取 最近在帮客户部署Kubernetes集群时,遇到了一个典型问题:使用containerd作为容器运行时,无法从内网HTTP协议的Harbor私有仓库拉取镜像。这个问题其实很常见,特别是很多企业内网环境中&…...
