转 - Android下一次OOM调试过程

简介: 线程数超限,即proc/pid/status中记录的线程数(threads项)突破/proc/sys/kernel/threads-max中规定的最大线程数。

分享原因


  • 调试过程记录非常详细,是很好排查思路学习和锻炼的学习资料
  • Android基于Linux内核,Linux对线程、进程、描述符等限制参数的功能
  • 技术文章


可以导致OOM的原因有以下几种:


  • 文件描述符(fd)数目超限,即proc/pid/fd下文件数目突破/proc/pid/limits中的限制。可能的发生场景有:
  • 短时间内大量请求导致socket的fd数激增,大量(重复)打开文件等
  • 线程数超限,即proc/pid/status中记录的线程数(threads项)突破/proc/sys/kernel/threads-max中规定的最大线程数。可能的发生场景有:
  • app内多线程使用不合理,如多个不共享线程池的OKhttpclient等等
  • 传统的java堆内存超限,即申请堆内存大小超过了 Runtime.getRuntime().maxMemory()
  • (低概率)32为系统进程逻辑空间被占满导致OOM.


原文地址


https://blog.csdn.net/zhizhuodewo6/article/details/81486384

目录
相关文章
|
6月前
|
存储 Java Linux
Android Mstar增加IR 自定义遥控头码完整调试过程
Android Mstar增加IR 自定义遥控头码完整调试过程
125 1
|
3月前
|
Shell Linux 开发工具
"开发者的救星:揭秘如何用adb神器征服Android设备,开启高效调试之旅!"
【8月更文挑战第20天】Android Debug Bridge (adb) 是 Android 开发者必备工具,用于实现计算机与 Android 设备间通讯,执行调试及命令操作。adb 提供了丰富的命令行接口,覆盖从基础设备管理到复杂系统操作的需求。本文详细介绍 adb 的安装配置流程,并列举实用命令示例,包括设备连接管理、应用安装调试、文件系统访问等基础功能,以及端口转发、日志查看等高级技巧。此外,还提供了常见问题的故障排除指南,帮助开发者快速解决问题。掌握 adb 将极大提升 Android 开发效率,助力项目顺利推进。
82 0
|
3月前
|
Ubuntu Android开发
安卓系统调试与优化:(一)bootchart 的配置和使用
本文介绍了如何在安卓系统中配置和使用bootchart工具来分析系统启动时间,包括安装工具、设备端启用bootchart、PC端解析数据及分析结果的详细步骤。
173 0
安卓系统调试与优化:(一)bootchart 的配置和使用
|
5月前
|
安全 API Android开发
Android打开USB调试命令
【6月更文挑战第20天】
183 1
|
6月前
|
存储 定位技术 开发工具
Android 开发前的设计,Android之内存泄漏调试学习与总结
Android 开发前的设计,Android之内存泄漏调试学习与总结
|
6月前
|
Android开发 内存技术
Android 通过tinyalsa调试解决录制和播放音频问题
Android 通过tinyalsa调试解决录制和播放音频问题
203 1
|
6月前
|
安全 编译器 API
Android HAL深入探索(5): 调试HAL报错与解决方案
Android HAL深入探索(5): 调试HAL报错与解决方案
1116 1
|
6月前
|
网络协议 Shell Android开发
Android 深入学习ADB调试原理(1)
Android 深入学习ADB调试原理(1)
240 1
|
6月前
|
安全 Java Shell
Android13 adb input 调试命令使用和源码解析
Android13 adb input 调试命令使用和源码解析
747 0
|
6月前
|
算法 架构师 程序员
android开发板调试,Android程序员的春天
android开发板调试,Android程序员的春天