解决常见的Android问题

news2024/11/19 1:29:23

常见问题:

1、查杀:

查杀一般分为两个方向一种是内存不足的查杀,一种的是因为温度限频查杀,统称为内存查杀,两个问题的分析思路不同

1、内存不足查杀:

主要是因为当用户出现后台运行多个APP或者是相机等消耗内存较大的进程的时候就会出现应用查杀情况

2、温度限频查杀:

温度限频查杀主要是根据查杀的内存占比和被杀时出现的log日志来决策的

总结:

两种不同的查杀应该座位不同的处理方式前期思路是一样的,后期分析不同

前期思路:

1、查杀应用

2、查杀时间

3、查杀的关键字

4、为什么被查杀

5、内存紧张查杀&温度查杀

2、ANR:

ANR一般常见的问题都是因为主线程持锁阻塞问题导致的,或者是网络问题导致出现的ANR问题或者是IO占比过高导致出现的ANR问题:

主线程持锁问题就需要从ANR日志里查看是什么问题在进行处理

查杀:

1、什么事查杀问题:

查杀主要是根据用户的启动模式来判断,测试会根据启动一个应用后,把应用退出后台,然后启动其他应用,然后再次打开首次应用,如果首次应用是冷启动,就可以判断为被杀了

1.1、如何看查杀:

log个问题的存放地

一般打开从jira上下载下来的log基本上都差不多,但是主要的log还是要在bugreport里面

解压后会出现主要查看的是这两个文件

bugreport这个文件是手机log,从这里可以看到用户操作手机的时间节点

dumpstate_board这个文件里面是手机的壳温度

开始查看bugreport文件

DUMP OF SERVICE CRITICAL cpuinfo:

这个标题主要是看总体CPU占比的

从截图上可以看到占比system_server占比CPU过高

下面开始查看查杀关键字

1. am_proc_died:进程被杀死的时间

有进程被杀时间点及原因包名,则直接搜索

am_proc_died: [0,[0-9]*,xxxx,,xxxx//代表包名----这是个样式模版

例子:

03-25 16:14:01.357 1000 2215 6034 I am_proc_died: [0,31528,com.tencent.mobileqq,702,10]

解释:

这条日志信息来自 Android 操作系统,指示一个名为 "com.tencent.mobileqq" 的进程 ID 为 31528 的进程已经终止。消息开头的 "I" 代表 "Info",表示这是一条信息性消息。消息还包括检测到该进程死亡的进程 ID(1000),父进程 ID(2215)和线程 ID(6034)。消息末尾的数字 "702" 和 "10" 是额外的信息,它们的含义如下: - 702:该进程的退出码。在 Unix 系统中,进程退出时会返回一个整数值,称为退出码。退出码通常用于指示进程的退出状态,例如是否成功完成任务等等。在这种情况下,退出码为 702,但具体含义需要查看该进程的文档或代码才能确定。 - 10:该进程的进程组 ID。在 Unix 系统中,每个进程都属于一个进程组,进程组 ID 用于标识该进程所属的进程组。在这种情况下,进程组 ID 为 10。

2.然后再查找一下进程的开始时间:

am_proc_start:[0,[0-9]*,xxxx,,xxxx//代表包名----这是个样式模版

03-25 16:14:01.357 1000 2215 6034 I am_proc_start: [0,31528,com.tencent.mobileqq,702,10]

解释:

开始的解释和结束的解释基本都差不多只是开头不同一样

03-25 16:14:00.945 1000 2215 4559 I am_kill : [0,3469,com.milink.service:core,935,camera boost,114948] 03-25 16:14:00.959 1000 2215 4559 I am_kill : [0,405,com.tencent.mobileqq:privileged_process0,905,camera boost,214012] 03-25 16:14:00.980 1000 2215 6038 I am_proc_died: [0,3469,com.milink.service:core,935,19] 03-25 16:14:00.987 1000 2215 4559 I am_kill : [0,32522,com.tencent.mobileqq:tool,905,camera boost,353896] 03-25 16:14:00.996 1000 2215 4559 I am_kill : [0,31528,com.tencent.mobileqq,702,camera boost,456120]

解释:

根据您提供的日志信息,可以看出应用程序 com.tencent.mobileqq 及其相关进程被标记为 "camera boost" 并被终止了。这种终止可能是由系统的内存管理策略触发的,系统可能认为这些进程正在消耗过多的系统资源,特别是与相机相关的资源,因此将它们终止以释放内存和其他系统资源。

从被查杀的地方开始查找一些信息从而就能知道为什么被查杀

总结:

一般应用被查杀主要原因都会提现到被查杀的时候,查杀的思路就是看进程是因为什么被杀的

开始查看dumpstate_board文件

一般来看这种文件主要是因为查杀的时候显示因为高温限频被查杀,或者是页面出现卡顿也有可能是高温导致的所以一把情况这个时候都是需要让热或者是功耗帮忙看一下是否正常或者是否能修复

用上面这张图片举例子

如何查看是不会因为高温导致的卡顿就需要看壳温和限频

VIRTUAL-SENSOR(壳的温度) 24977(24°)

lmh_cpu7(CPU限频,手机CPU0-7) 0(限频的大小)

总结:

如果是因为手机高温限频锁导致的查杀或者是卡顿问题,这个时候就需要找热或者是功耗人员看一下是什么情况是否正常了,

ANR分析方案

如果是ANR问题我们就需要从ANR日志中获取原因

ANR日志一把都会存放在:

data

anr

对照的ANR出现的时间进行查看是什么问题

分析ANR持锁的问题:

查看ANR问题主要看是不是有lock <0x04da9bd0>这样的关键字,如果有就看一下后面的id 这个截图的id是83 那我们就去下面找一下id=83的进程

从下面的log可以看出主要的原因是因为闹钟导致的主线程阻塞出现的ANR问题这个时候就需要请相关的业务人员帮忙看一下,为什么阻塞了

这张图片主要是因为应用无响应导致出现的ANR问题

在这个日志中,有几个关键字可以指示是因为应用无响应导致的ANR:

  1. "ANR in" 或 "Application Not Responding":通常出现在日志开头,表示应用无响应。

  2. "Blocked" 或 "BlockedReason":表明线程被阻塞,无法继续执行。

  3. "Native":表示线程处于本地代码(Native)执行的状态,可能是因为执行了耗时的本地操作导致的阻塞。

  4. "main" 或 "主线程":表示主线程被阻塞,主线程的阻塞是导致应用无响应的主要原因之一。

  5. "Cmd line":显示应用的命令行,有助于确定是哪个应用发生了ANR。

  6. "DALVIK THREADS" 或 "ART THREADS":显示了当前进程中的线程信息,可以检查是否有线程长时间被阻塞。

在这个日志中,可以看到主线程("main")被阻塞,而且是在执行应用的代码("com.fy.zdxs.mi")时发生的,这些都是指示应用无响应的关键字。

出现的常见GC问题

最近出现抖音内存泄漏长时间GC导致出现的卡顿问题,从log上如何查看是因为GC问题导致的抖音出现的卡顿或者是ANR问题

从上面的截图可以看到进程后有个GC 大写的 这个明显是抖音内存泄漏导致的问题像类似的问题需要找系统稳定性,三方兼容帮忙看一下

思路:

查看是不是GC问题,需要查看时间和进程名称,然后看一下GC数量在确定是不是GC问题,还有要看看是不是GC回收时间较长倒是出现的ANR问题

每个GC回收都会有相关的回收内存的大小和回收的时间,可以根据时间的长短来进行查看,是不是GC时间过长

查看每个进程占比内存的大小

am_pss----每个进程在不同的时间节点出现的内存占比

[PID, UID, 进程名称, PSS总内存, 分配总内存, 分配内存, Native Heap, Dalvik Heap, 其他, PSS的次数, 最后 PSS 的次数]

am_pss : [24149,10156,com.google.android.googlequicksearchbox:search,69756928,48447488,14669824,128151552,0,3,12]

参考文档:

1、学习文章

https://www.jacpy.com/2017/04/24/android-anr-thread-lock-analysis.html

2、学习文章:

https://segmentfault.com/a/1190000040142277

NAR教学:

https://www.cnblogs.com/huansky/p/13944132.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1662156.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LeetCode96:不同的二叉搜索树

题目描述 给你一个整数 n &#xff0c;求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种&#xff1f;返回满足题意的二叉搜索树的种数。 代码 /*dp[i]&#xff1a;表示i个节点有dp[i]个不同的二搜索叉树递推公式&#xff1a;dp[i] dp[j-1] * dp[i-j], j…

【JavaSE】/*运算符—快速总结*/

目录 前言 一、什么是运算符 二、算术运算符 三、增量运算符 四、自增/自减运算符 五、关系运算符 六、逻辑运算符 七、位运算符 八、移位运算符 九、条件运算符 十、运算符的优先级 前言 Java 中的运算符和 C语言 的运算符规则有很多类型的地方&#xff0c;我们只…

K8s源码分析(二)-K8s调度队列介绍

本文首发在个人博客上&#xff0c;欢迎来踩&#xff01; 本次分析参考的K8s版本是 文章目录 调度队列简介调度队列源代码分析队列初始化QueuedPodInfo元素介绍ActiveQ源代码介绍UnschedulableQ源代码介绍**BackoffQ**源代码介绍队列弹出待调度的Pod队列增加新的待调度的Podpod调…

LinkedList链表

LinkedList 的全面说明 LinkList底层实现了双向链表和双端队列特点可以添加任意元素&#xff08;元素可以重复&#xff09;&#xff0c;包括null线程不安全&#xff0c;没有实现同步 LinkedList 的底层操作机制 LinkedList底层维护了一个双向链表LinkList中维护了两个属性fi…

【C#进阶】简单数据结构类

简单数据结构类 文章目录 1、Arraylist1、ArrayList的本质2、声明3、增删查改4、装箱拆箱思考 背包售卖 2、Stack1、Stack的本质2、声明3、增取查改4、遍历思考 计算一个数的二进制 3、Queue1、Queue的本质2、声明3、增取查改4、遍历思考 每隔一段时间打印一条消息 4、Hashtab…

运营商的mpls专线

在当今高速发展的数字化时代&#xff0c;网络已成为企业发展不可或缺的基础设施。作为企业网络 连接的重要组成部分&#xff0c;MPLS专线在运营商的推动下逐渐成为了企业选择的首选。 MPLS&#xff08;Multi-Protocol Label Switching&#xff09;是一种基于标签的交换技术&am…

QT C++(QWidget类及其常见的属性)

文章目录 1. QWidget类及其常见的属性 1. QWidget类及其常见的属性 QT各种控件都是继承自QWidget类&#xff0c;QWidget类是QT控件体系中通用的部分。 QWidget属性如下图 常见的QT属性为&#xff1a; enabled&#xff1a;描述控件是否处于可用状态&#xff08;禁用状态这个…

ssrf学习2——内网ip绕过

环回地址绕过 尝试访问内网 也就是127.0.0.1里面的flag.php 但是如果真的去访问127.0.0.1/flag.php 还是不行 也就是说127.0.0.1被过滤了 进制转换 127.0.0.1是点分十进制 可以用二进制八进制十六进制来绕过过滤 0x7F000001/flag.php 017700000001/flag.php(八进制前面是…

Yolov8目标检测——在Android上部署Yolov8 tflite模型

1. 简介 YOLOv8 是一种用于目标检测的深度学习模型&#xff0c;它是 YOLO&#xff08;You Only Look Once&#xff09;系列的最新版本之一。YOLO 系列因其高效和准确性而在计算机视觉领域非常受欢迎&#xff0c;特别是在需要实时目标检测的应用中&#xff0c;如视频监控、自动…

docker搭建mysql集群实现主从复制

前言 随着业务的增长&#xff0c;一台数据服务器已经满足不了需求了&#xff0c;负载过重。这个时候就需要减压了&#xff0c;实现负载均衡和读写分离&#xff0c;一主一丛或一主多从。 主服务器只负责写&#xff0c;而从服务器只负责读&#xff0c;从而提高了效率减轻压力。 …

docker安装nginx支持ssl 实现https访问(完整版)

全文目录,一步到位 1.前言简介1.1 专栏传送门1.1.1 本文简介 2. docker安装nginx支持ssl2.0 准备ssl证书(例: 阿里云)2.0.1 配置域名解析2.0.2 找到数字证书管理服务并签发ssl证书2.0.3 选择默认证书 填写域名 创建2.0.4 提交审核, 签发成功2.0.5 解压并上传到宿主机ssl路径下 …

<网络安全>《83 微课堂<国家数据要素总体框架>》

1 总体框架 国家数据要素化总体框架由“六横两纵”共八个关键环节构成。 2 国家数据基础设施&#xff08;NDI&#xff09; 最底部第一层是国家数据基础设施&#xff08;NDI&#xff09;。国家数据基础设施&#xff08;NDI&#xff09;是经济社会进入数据要素化发展新阶段后新…

Vue面试经验2

Vue 你说你在vue项目中实现了自定义指令&#xff0c;如何实现 全局指令在main.js入口文件中实现 使用方法&#xff1a;v-指令名称 每个钩子函数都有两个参数&#xff08;ele,obj&#xff09; ele:绑定指令的元素 obj:指令的一些信息&#xff08;比如绑定指令的值&#xff0c…

Python Pendulum:用代码提升您的时间管理技能

更多Python学习内容&#xff1a;ipengtao.com Python中的Pendulum库是一个强大的日期和时间处理工具&#xff0c;提供了丰富的功能和灵活的接口&#xff0c;用于处理日期、时间、时区等相关操作。本文将全面介绍Pendulum库的主要功能、使用方法和实际应用场景&#xff0c;并给出…

基于ESP32和ESP8266的物联网开发过程(二)

在做这个项目前&#xff0c;也做了一些调研。项目的初衷是想要用于智能家居。我比较了小米IoT、阿里云、ESPHOME、巴沙云、点灯科技和ONENET等几个平台。最终选择了Onenet&#xff0c;部分原因是之前用过它的多协议版本&#xff0c;但现在这个版本已经下线了。 小米IoT的公测名…

使用FFmpeg处理RTSP视频流并搭建RTMP服务器实现图片转直播全流程

目录 一、FFmpeg安装与配置教程二、搭建并配置Nginx RTMP服务器三、从RTSP视频流提取帧并保存为图片四、将图片序列转换为视频五、将视频推送为直播流六、将图片序列推送为直播流 在实时音视频领域&#xff0c;我们经常需要处理从各种源&#xff08;如摄像头&#xff09;获取的…

Java练手项目 个人学习等选题参考

难度系数说明&#xff1a; 难度系数用来说明项目本身进行分析设计的难度 难度系数大于1的项目是非常值得反复学习的&#xff0c;从项目中成长 前言 大家好&#xff0c;我是二哈喇子&#xff0c;此博文整理了各种项目需求 要从本篇文章下的项目中学习的思路&#xff1a; 用的…

【架构】MVC架构模式 三层架构

1 不使用MVC架构模式完成银行账户转账 <% page contentType"text/html;charsetUTF-8" language"java" %> <html><head><base href"${pageContext.request.scheme}://${pageContext.request.serverName}:${pageContext.request.…

[MRCTF2020]Ez_bypass1 and [网鼎杯 2020 青龙组]AreUSerialz1()php语言基础学习,以及序列化概念的基本了解

1.[MRCTF2020]Ez_bypass1 &#xff08;1&#xff09;打开环境后它是一串很长并且看起来非常混乱的代码&#xff0c;看不懂那咱就先不管&#xff0c;直接查看源码 &#xff08;2&#xff09;看了之后可以发现它涉及到很多东西 首先就是要进行一个仔细的代码审计&#xff0c;分…

网络基础-ICMP协议

ICMP&#xff08;Internet Control Message Protocol&#xff0c; Internet控制消息协议&#xff09; ICMP协议是IP协议的辅助协议&#xff0c;用于在IP网络上发送控制消息&#xff0c;它通常被用于诊断网络故障、执行网络管理任务以及提供一些错误报告&#xff1b;对于收集各…