
内存泄漏分析
Android系统攻城狮
《Android系统多媒体进阶实战》一书作者
展开
-
pstack: Input/output error failed to read target解决
1.pstack获取进程死锁堆栈信息报错# sudo pstack 3200 //pid3200: ./a.outpstack: Input/output errorfailed to read target.2.pstack是gdb封装的shell脚本:# sudo emacs pstack#!/bin/shif test $# -ne 1; then echo "Usage: `basename $0 .sh` <process-id>" 1>&2.原创 2020-12-12 12:52:26 · 4067 阅读 · 1 评论 -
Linux内存buffer与cache区别
一、首先大概了解一下计算机CPU、Cache、Buffer、内存、硬盘、SWAP CPU也称为中央处理器(CPU,Central Processing Unit)是一块超大规模的集成电路,是一台计算机的运算核心(Core)和控制核心( Control Unit)。它的功能主要是解释计算机指令以及处理计算机软件中的数据。中央处理器主要由三核心部件组成,运算器、控制器和总线(BUS),运算器又主要由算术逻辑单元(ALU)和寄存器(RS)组成。 CPU Cache(缓存区)即高速缓冲存储器,集成在CP转载 2020-12-01 21:24:12 · 334 阅读 · 0 评论 -
valgrind内存泄露和线程竞态检测
valgrind通常用来成分析程序性能及程序中的内存泄露错误一Valgrind工具集简绍Valgrind包含下列工具:1、memcheck:检查程序中的内存问题,如泄漏、越界、非法指针等。2、callgrind:检测程序代码的运行时间和调用过程,以及分析程序性能。3、cachegrind:分析CPU的cache命中率、丢失率,用于进行代码优化。4、helgrind:用于检查多线程程序的竞态条件。5、massif:堆栈分析器,指示程序...转载 2020-12-03 21:19:59 · 1109 阅读 · 0 评论 -
Android/Linux线程死锁demo分析(九十六)
1.线程死锁#include <stdio.h>#include <stdlib.h>#include <pthread.h>#include <unistd.h>pthread_mutex_t m;void *runodd(void *d){ int i=0; for(i=1;;i+=2){ pthread_mutex_lock(&m); printf("奇数:%d\n",i); usleep(100); pthr.原创 2020-12-12 00:42:37 · 403 阅读 · 0 评论 -
线程死锁分析思路(九十七)
定位方法:(1)如系统存在运行日志,首先分析日志信息。(2)利用pstack工具打印出此时系统的存在线程堆栈快照。(3)有些阻塞栈可能是因为它需要等待前面的线程执行结束才可以执行,所以要先确定依赖关系。(4)若问题可以复现,可以利用gdb调试系统,但若不确定问题是否可以复现,则推荐不要使用gdb,因为会破坏问题产生的环境,gdb在一定程度上会影响系统运行导致卡住的因素由成立变成不成立。示例代码:#include <unistd.h>#include <pthrea.转载 2020-12-12 01:01:42 · 463 阅读 · 0 评论 -
调试系列2:bugreport实战篇
一、Bugreport文章Bugreport源码篇(一)从源码角度阐释了Bugreport,那么本文则是从实战角度来说说,如何看懂bugreport,对于通过bugreport获取到内容往往非常长,这里简单划分为19部分,先整体上简单说说每部分log的title信息。1. 系统build相关信息系统build信息:dumpstate: dateBuild: getp转载 2017-06-06 10:59:57 · 2777 阅读 · 0 评论 -
调试系列1:bugreport源码篇
framework/native/cmds/bugreport/bugreport.cppframework/native/cmds/dumpstate/dumpstate.cppframework/native/cmds/dumpstate/utils.c一、概述通过adb命令可获取bugrepport信息,并输出到文件当前路径的bugreport.txt文件:转载 2017-06-06 10:58:40 · 2523 阅读 · 0 评论 -
ps进程命令
原址在adb shell终端,输入 ps,可查看手机当前所有的进程状态,其中ps的英文全称是Process Status。1. ps命令参数-t 显示进程里的所有子线程-c 显示进程耗费的CPU时间-p 显示进程优先级、nice值、调度策略-P 显示进程,通常是bg(后台进程)或fg(前台进程)-x 显示进程耗费的用户时间和系统时间,格式:(u:0, s:0),单位转载 2017-06-06 10:40:58 · 613 阅读 · 0 评论 -
Android内存分析命令
原址一、概述1.1 内存指标概念Item全称含义等价USSUnique Set Size物理内存进程独占的内存PSSProportional Set Size物理内存PSS= USS+ 按比例包含共享库RSSReside转载 2017-06-06 10:36:57 · 838 阅读 · 0 评论 -
android如何查看cpu的占用率和内存泄漏
在分析内存优化的过程中,其中一个最重要的是我们如何查看cpu的占用率和内存的占用率呢,这在一定程度上很重要,经过查询资料,研究了一下,暂时了解到大概有以下几种方式,如果哪位高手有更好的办法,或者文中描述有错误,还望高手在下面留言,非常感谢! 一、 通过eclipse,ADT开发工具的DDMS来查看(Heap) 在“Devices”窗口中选择模拟器中的一个需转载 2016-11-14 14:44:58 · 639 阅读 · 0 评论