自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

oujunli的专栏

路漫漫其修远兮,吾将上下而求索

  • 博客(54)
  • 资源 (2)
  • 收藏
  • 关注

原创 常用命令汇总

Android:adb shell ps 得到进程号adb shell am dumpheap 进程号  /storage/sdcard0/mem.hprof   //倒出hprof文件adb reboot bootloader//重启进入fastboot模式fastboot flash system system.imgmake snod //产生一个新的系统映像system

2013-05-06 21:51:27 5194 2

原创 慎用Android Process setThreadPriority

最近几个版本,发现公司产品的线上启动时间,突然增加了2s左右,而且线下测试也能够测试在低端机器上,耗时增加明显。复现问题因为在低端机器上很容易复现,于是用红米note 1s测试,对比前后两个版本A和B,B版本确实会比A版本平均慢2s左右。在测试过程中会重复的安装与卸载apk,有的时候发现B版本时间跟A版本一样,很是奇怪。多次确认环境后,发现B版本登陆与不登陆应用,启动时间差别很大。分析问题既然在登陆

2016-07-20 19:19:08 9901 3

原创 Android CPU使用率:top和dump cpuinfo的不同

CPU是系统非常重要的资源,在Android中,查看CPU使用情况,可以使用top命令和dump cpuinfo。我记得很久以前,就发现这两者存在不同,初步猜测应该是算法上存在差异。最近需要采集应用CPU的使用率,看了一下两种CPU的计算方法。1、toptop是比较经典的CPU计算方法,top的代码在androidm/system/core/toolbox/top.c下面,输出process的cpu

2016-05-20 18:04:20 16875 2

原创 Android性能优化之路(五年之痒)

记得在上学的时候,就听说在某个方面坚持学习一年,也就入门了。很庆幸,工作五年了,一直都在做Android性能优化。一般来说,工作三年左右会是工作的一个门槛,五年左右会是另外一个门槛,所以最近非常的低落、迷茫。昨晚外面下着漂泊大雨,辗转反侧的我,在想自己这从业五年以来的经历。刚毕业的人,会觉得很多东西都很新鲜,那个时候主要是以学习为主,尤其是系统性能,初步了解每个模块,大概也需要一年左右的时间,一年左

2016-04-23 13:43:46 2313 2

原创 生活、工作、总结(十一)

不做Android性能的我,如果行尸走肉一般。难道技术这条路真的会这么艰辛?世间有伯乐,而后才有千里马,千里马常有,而伯乐不常有,我的伯乐在哪?我的路在何方?2016.03.06记,致迷茫的自己。。。

2016-03-06 22:32:25 893 1

原创 Android CPU FlameGraph

记得刚接触Android性能的时候,Android还是2.3,用的是TraceView,到Android 4.1的时候,又用了Systrace。TraceView可以称得上是Android APP的性能优化神器,然后Traceview的特点是对性能影响太大,几倍到几十倍的性能影响,导致很多时候,都不知道是代码的性能问题,还是工具本身的问题,虽然后来又采样的功能,但采样却是定期的去get thread

2016-01-24 20:22:23 2433 2

原创 生活、工作、总结(十)

好久没有更新博客了,因为实在是不知从何说起,换句话说,也就算过的不怎么的。工作上,接触了很多新的东西。也许是因为过于前沿,技术性很强,也许是自己能力不足,无法参透实物的本质,以至于自己显的无能为力。越来越不习惯这种十天半个月没有成果就会被追问日子了,多么怀念当年可以可以花一两月去解决一个问题的时候,那样的日子很辛苦,却很欣慰,可却一去不复还了。显然,对与想从本质上解决问题角度来说,别说一两周,一两个

2016-01-01 22:25:44 870 1

原创 Android Java和Native Memory Flame Graph

对于做性能的人来说,不知道问题所在时,最好可视化它,而Memory一直以来,都是性能关注的重点,然而在Android上,却也只能dumpsys meminfo这种运行古老的命令行查看内存,VM的内存好一点,可以dump hprof文件查看,但也是Static的方式,或者使用LeakCanary,查看内存泄露,也都是在memory leak境界,没有到memory performance的地步。大概在

2015-10-22 22:49:25 1939 8

原创 生活、工作、总结(九)

最近比较忙,忙的不可开交,然而却没有多少感觉。一直都有想写一本介绍Android性能优化的书的想法,然而开头了以后,确不敢再继续了,因为在这个行业待的时间越长,越觉的自己无知。以前的时候,经常在技术上感到迷茫,不知走向何方,现在见的越多,越感觉知识的匮乏,很多要学,很多想学,然而时间却并没有这么充足。面对问题的时候,多年建立起来那么点自信,也溃不成军了,那些觉得牛B哄哄的人的自信到底是哪来的?至少在

2015-09-27 18:30:58 1065 4

原创 生活、工作、总结(八)

不知不觉中,我又回归做性能接近三个月了,在performance这条路上,我已经走过四个年头了。知道性能的人很少,做性能的人更少,喜欢做性能的人,几乎找不到多少了,期间的艰辛似乎只有经历过的人才能明白。回到做性能,与以前的感觉完全不一样。毕业以来,一直都从事performance相关的工作,即使有变动,但还是做performance,更知道自己喜欢什么,所以更懂得珍惜。回来以后,就开始处理各种各样的

2015-08-18 20:59:56 1187 5

原创 生活、工作、总结(七)

不知不觉中,我已经工作四年了,在阿里工作一年了,没有想到会做性能一直做了四年。        有人跟我说,纯碎的做性能是没有发展前途的,以我现在情况来看,我也是这样觉得。一直喜欢做性能的原因是觉得性能需要对技术比较执着,而且性能是一个永远没有止境的方向,很感激我的师傅领我进入这个门。不知道为什么,阿里不流行师傅带徒弟,甚感遗憾,也许阿里是一个偏应用的地方,个人觉得对于系统或者底层来说,有人带,

2015-05-16 12:59:50 1073

原创 生活、工作、总结(六)

生活、工作

2015-02-06 20:23:59 809

原创 Android performance今天的发现

好久没有在Android Performance领域有什么新发现了,今天在跟踪问题的时候,突然发现Android也可以看到这样的图:在Android上找这种类型的图找了两年了,终于找到了。在Android Performance这条路上略感迷茫的时候,能找到这种图像,又看到了希望,继续坚持奋斗ing。路漫漫其修远兮,吾将上下而求索。

2015-01-23 22:55:11 2806 3

原创 生活、工作、总结(五)

不知不觉中2014就过完了,这一年对自己来说是个挑战,换了城市,换了工作,一切都是从零开始,些许失望,些许成功。     工作上,由以前做system performance换车了app performance。system performance技术性更强,app performance跟接近业务,需要了解业务的逻辑,唯一让我自己都诧异的是,我竟然跟手淘主链路相关模块负责人都打过交道。我一直

2015-01-11 21:36:27 1073

原创 生活、工作、总结(四)

不知不觉中,已经来杭半年了,

2014-10-26 13:11:19 916

原创 ART Systrace查看Lock

Android 4.4在ART

2014-08-03 14:08:41 3792

原创 初步体验Android L的battery historian

周末在家没事,

2014-07-08 13:52:14 19101 7

原创 Android Xposed得到性能数据

说到Android性能栅栏,b

2014-06-11 20:07:27 8569

原创 阿里面试总结

2014.3.30      记得去年的时候,媳妇问我,在BAT三个公司中选一个,会去哪个公司?当时几乎没有多想,就说,阿里吧!阿里对我来说,有一种莫名的向往!只是随便聊聊天而已,觉得自己技术还没有达到要求,也没去多想。    世间的事就是那么奇怪,还真有人问我对阿里的工作感兴趣否,称为A吧!真的he感激A给我这次机会,。当然,虽然我觉得还没有准备好,但还是去试试的。电话面试了两次

2014-04-04 19:31:44 3278 4

原创 Android在创建硬件层慢的原因分析

最近在项目上,发现很多应用在开始滑动的时候,都会卡顿一下,看了一下systrace文件,可以看到在buildLayer的时候耗时比较长:      可以看到是在glTexImage2D耗时比较多。进一步使用GL Trace分析,可以看到:glTexImage2D(target = GL_TEXTURE_2D, level = 0, interna

2014-02-11 17:02:26 3348 8

原创 退出U盘模式后滑动Launcher卡顿的问题分析

最近公司的手机发现退出U盘模式后,在U盘存有图片等内容比较多的情况下,滑动Launcher会有一段时间卡顿的现象。其实不是最近的项目才有的问题,以前的项目就有,一直都没有解决而已,顽疾。       当然,是在U盘不同模式直接切换的时候出现了问题,跟负责Vold的一起分析了一下,没有发现什么异常的地方。测试的时候发现,U盘存储的内容越多,出现卡顿情况的时间越长,可能与media进程有关。不管怎

2014-02-11 11:47:40 3092 9

原创 Android 进入退出应用动画卡顿分析

android 性能优化

2014-01-01 21:39:55 15754 5

原创 Android计算函数时间戳的方法

对于做性能的人来说,知道时间的花在哪了是比较重要的,可以在函数前后得到系统的时间,计算时间戳能够得到每个函数的时间。在JAVA中可以通过System.currentTimeMillis()得到:long>View.draw(canvas);long>long>Log.i(TAG,"draw:>在native的代码中,可以通过下面的方式得到函数的执行时间:

2013-12-25 21:24:51 16575

原创 Android代码添加systrace跟踪

android 4.3系统上,应用可以使用     import android.os.Trace;     Trace.beginSection("TEST");     Trace.endSection();添加systrace跟踪,然后通过thon systrace.py --app=TEST 指定apk。framework的java层代码里面添加systrace跟踪

2013-11-22 18:01:32 27292 1

原创 Android内存的使用

通常,对应Linux的系统来说,可以通过cat /proc/meminfo查看内存的使用情况,Android是基于Linux的,所有也可以使用adb shell cat /proc/meminfo查看内存的使用情况,如下所示:MemTotal:        1893284 kBMemFree:          823932 kBBuffers:           30628

2013-10-18 16:45:49 8469

原创 与dalvik GC相关的属性详解

在dalvik中,GC的类型有三种:1、GC_EXPLICIT:    应用主动调用System.gc()产生的GC事件。2、GC_FOR_ALLOC:    内存分配时,发现可用内存不够时触发的GC事件。3、GC_CONCURRENT:    给java层的class分配内存后,计算已分配的大小达到阈值(当前DVM heap size小一点)时会触发的GC事件。

2013-10-12 11:56:29 24504 4

原创 Android动态调试程序

以前在chinaunix上发过一遍同样的文章,原文内容如下(http://blog.chinaunix.net/uid-23738462-id-3244927.html):写程序的话,只要有思路,实现起来不会太难,而我们经常要做的是读别人的程序,自己写的程序如果没有好的注释的话,过一段时间以后,尚且不知道当时为什么这么写,何况是别人写的呢?在读别人程序的时候,弄清楚程序的流程是很重要的,输出程

2013-09-28 14:44:27 5180 12

原创 内存碎片导致应用不断被杀的问题

内存分配一波三折,小结一下:1.      先尝试快速分配,其中会从不同的zone以及迁移类型上去尝试,失败的话就进入慢速分配,里面会再划分单页面从pcp上分配以及多页面从伙伴系统中分配。2.      尝试慢速分配,一般流程就是唤醒内存页面回收线程,然后尝试低水位分配 -> 忽略水位分配 -> 压缩内存分配 -> 直接回收内存分配 -> oom killer杀死线程分配 -> 压缩内存分

2013-08-19 20:16:20 26669 8

原创 Android使用gdb调试native程序

1、push gdbserver到手机,并修改为可执行权限。adb shell push gdbserver /system/bin/adb shell chmod 777 /system/bin/gdbserver2、得到进程号并attact上进程。adb shell ps |grep system_serveradb shell gdbserver :1234 --atta

2013-08-02 16:01:44 3164

原创 配置内核支持Ftrace

1、添加下面的config:STRICT_MEMORY_RWX=nCONFIG_FUNCTION_TRACER=yCONFIG_HAVE_FUNCTION_GRAPH_TRACERCONFIG_FUNCTION_GRAPH_TRACER=yCONFIG_STACK_TRACER=yCONFIG_DYNAMIC_FTRACE=y去掉:CONFIG_STRICT_M

2013-06-22 16:39:09 2186

原创 通过Android trace文件分析死锁ANR

对于从事Android开发的人来说,遇到ANR(Application Not Responding)是比较常见的问题。一般情况下,如果有ANR发生,系统都会在/data/anr/目录下生成trace文件,通过分析trace文件,可以定位产生ANR的原因。产生ANR的原因有很多,比如CPU使用过高、事件没有得到及时的响应、死锁等,下面将通过一次因为死锁导致的ANR问题,来说明如何通过trace文件

2013-06-15 22:26:50 57302 13

原创 Intel和AT&T语法的主要区别

1、AT&T使用$表示立即操作数,Intel是不需要的。2、AT&T在寄存器名称前面加上前缀%,Intel不这么做。3、AT&T语法出来源和目的操作数与Intel是相反的。4、AT&T语法在助记符后面使用单独的字符来引用操作数中使用的长度。如movl $4, %eax。5、长调用和跳转使用不同语法定义段和偏移量。AT&T语法使用ljmp $section, $offset,而Int

2013-06-04 17:53:47 1583

原创 Android bootchart使用步骤

1、 主机安装bootchart工具 sudo apt-get install bootchart(Ubuntu)2、  生成支持bootchart的boot.img export INIT_BOOTCHART=truemake boot.img烧写boot.img到手机,重启手机3、  设定bootchart收集信息 的结束时间adb shell ‘echo 120>

2013-06-03 15:20:19 6010

原创 列表滑动、mdelay or msleep和对齐唤醒

1、列表滑动     记得从去年快放假的那两周,刚开始的时候,是很多人信息列表卡顿。通过不停的跟踪发现在显示文本的时候,Android不提倡使用硬件加速的方式。虽然Android 4.0以后,Android在很多地方都提倡用硬件加速的方式去绘图,以提高绘图效率,但对于中文的文本,这种方式是不可取的。原因在于中文编码比较多,而使用硬件加速的时候,进行了缓存操作,导致在中文文本比较多的

2013-05-28 15:09:39 3485

原创 在User模式下开启ftrace、adb root和traceview的方式

1.配置kernel,在config文件中删除下面的设定;# CONFIG_PERF_EVENTS is not set# CONFIG_HW_PERF_EVENTS is not set# CONFIG_PROFILING is not set# CONFIG_EVENT_TRACING is not set# CONFIG_EVENT_POWER_TRACING_DEP

2013-05-28 10:49:56 4439

原创 屏幕类型与分辨率表对应表

型号分辨率HVGA320*480WVGA480*800QHD540*960HD720*1280FHD1080*1920

2013-05-23 08:56:12 2420

原创 开机启动慢的原因分析

最近的项目开机启动花了40多秒,正常开机只需要28秒就能开机起来。内核的启动我没有去分析,另一个同事分析的。我主要是分析从SystemServer启来到开机动画结束显示解锁界面的这段时间,也就是开机动画的第三个动画开始到结束这段时间,这是个比较耗时阶段,一般都在17秒左右(见过牛B的手机,只需5秒)。        SystemServer分两步执行:init1和init2。init1主要

2013-04-29 13:46:31 4056 3

原创 性能工具

systrace:Android显示性能,可以看到每帧的情况。traceview:Android java层的性能。perf:适用于分析kernel。aprof:PowerTop:smem:cpufreq-bench:kernbench:lmbench:systemtapoprifole:适用于分析内核跟应用。Dtrace:适用于分析内核跟应用。

2013-04-07 21:51:30 1538

原创 参考学习资料

1、Androidhttp://blog.csdn.net/column/details/androidluo.html2、算法http://deeplearning.net/http://blog.csdn.net/yangliuy/article/category/1085633http://blog.csdn.net/v_JULY_vhttp://cs

2013-03-22 17:49:32 962

原创 生活、工作、总结(三)

又好久没有没有小结一下自己了,总结自己的时间越短,说明学的东西越多,越长,说明自己在荒废,在虚度,在混日过过,这是最不想的。过了一个年,20多岁了,这是自己唯一一个不在家过年的,心里有些许的愧疚,跑去见家长了,回了一趟西安,那个如此美好,如此淳朴、让人如此怀念的地方,自从离开了那,再也感受不到那种淳朴的民风了。过一个年跑了两个地方,每个地方待上五天不到的时间,好短。父母又老了,头发快白完了,回

2013-03-04 22:04:12 846

Android逆向工具

Android逆向工具,包括apktol、dex2jar和Auto-sign等

2013-02-25

Pro Android Apps Performance Optimization

一本法国MTK开发人员写的Android性能相关的书籍,对于Android性能相关的问题做了全面的描述。

2012-12-31

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除