自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

老王的地盘

Android性能领域

  • 博客(145)
  • 资源 (27)
  • 收藏
  • 关注

原创 IO统计工具blockStatus.py源码

process_sheet.cell(row=row_idx+7, column=1, value="I/O大小分布(KB)")process_sheet.cell(row=row_idx+3, column=1, value="平均排队时间(ms)")process_sheet.cell(row=row_idx+4, column=1, value="平均硬件时间(ms)")process_sheet.cell(row=row_idx+5, column=1, value="平均总时间(ms)")

2025-07-08 21:55:22 510

原创 旋转屏幕优化

从google原生算法,可以知道其有2个比较大的缺陷:1) 通过重力传感器传来的x,y,z轴的加速度合成之后只有一个垂直往下的加速度,如果此时用户在别的方向上有加速度,那么通过反余弦、反正切等计算的角度就会不准确,原始的角度计算有问题,就谈不上识别正确的方向了。而google在旋转角度上,并未用代码进行修正。2) google拿到方向信息之后,去干扰采取的措施是延迟300-500ms,等彻底没有干扰的时候再进行方向改变,这个方案很保守。

2025-07-08 21:13:07 839

原创 旋转屏幕的整体流程

当用户旋转手机屏幕,到完成屏幕旋转,进行屏幕旋转的过程,主要涉及系统的多个重要组件和服务。手动点击屏幕旋转按钮后,到完成屏幕旋转,中间经历了多个关键流程。屏幕旋转算法部分位于自动旋转中的数据采集和屏幕方向计算。

2025-07-08 21:11:35 594

原创 原生屏幕旋转算法(AccelSensor)

即各个方向的范围如下:0-->(0,45)&(337.5,360),1-->(67.5,135),2-->(157.5,225),3-->(247.5,315)逆时针相邻意味着设备的当前旋转角度 currentRotation 和提议的旋转角度 rotation 之间的关系是旋转角度相差1个90度单位,经过两者连线所围绕的方向形成了顺时针方向。判断提议的旋转角度和方向角度是否可以接受。//0-360度减去22.5度,即(0,1,2,3)-->(-22.5,67.5,157.5,247.5)

2025-07-08 21:09:32 577

原创 屏幕旋转属性值

android:screenOrientation属性对应值。android:screenOrientation属性对应值。属性来设置,也可以在Activity中通过。在manifest文件中通过。

2025-07-08 20:42:50 768

原创 屏幕旋转流程

(1) sensor感应 --> WMS.updateRotation(false /* alwaysSendConfiguration */, false /* forceRelayout */);[](/data/nishome/td/jimeng.zhang/Desktop/屏幕旋转/start_screen_freeze.png)[](/data/nishome/td/jimeng.zhang/Desktop/屏幕旋转/windowstate_onConfiguration.png)

2025-07-08 20:41:15 517

原创 IO器件性能评估

b,573.8ms的io时长是 573.8 * 29.97%=171.96ms。c,按比例缩放io时间 = 171.96 *(500/300)=286.6ms。比如应用启动过程中的。4,将预估后的增加io时间加到原来操作时间,将此作为此项操作预估时间。3,根据规格书读写能力数据比率,对io占用时间进行预估(等比放大);a,io时长187ms,占比 187/624 = 29.97%2,针对应用操作过程进行分析,识别出过程中io占用时间;1,对比UFS、eMMC的规格书标注的io读写能力。

2025-07-08 10:19:01 219

原创 调整水位来调节zoneinfo实例

(high-low=(10841+11493-5995-6356)*8/1024=77M 当前已偏大,需要减小到60)通过zoneinfo工具(excle文档),计算得出3buffer约30M,理想是处于3buffer左右。(TGuard水位是由watermark和lmkd决定,当前约在820M)(软重启,关闭所有程序,更新配置文件。(设置cache进程数,影响驻留率)

2025-07-08 10:17:57 229

原创 dexopt学习待整理

除此之外在上图还可以看到 Dalvik 虚拟机中有使用 JIT 编译器,也就是说其也能将程序运行的热点 java 字节码编译成本地 code 执行,所以其与 Art 虚拟机还是有区别的。答:这道题目如果想深入理解就需要去看源码了,不过对于应用层开发来说有个原理上的大致理解也是必须掌握的,具体区别可用如下图概述(图片来自网络)。通过上图可以很明显的看出 dexopt 与 dex2oat 的区别,前者针对 Dalvik 虚拟机,后者针对 Art 虚拟机。表示优化完成,总耗时248.681s,启动了4个线程。

2025-07-08 10:16:51 363

原创 iowait过高问题查找及解决方案

Workload表明当前io的loading,Read Throughput=57344 kB/s和Write Throughput=8673 kB/s 分别代表eMMC的读写速度,size: 5021696 bytes代表传输的数据量。源代码位于:/troms_platforms_master_na/frameworks/base/core/java/com/android/internal/os/ProcessCpuTracker.java。2)调整内存空间,减少回收,延长文件存活时间。

2025-07-08 10:15:59 588

原创 GC学习待整理

f2fs文件系统(六)GC介绍。

2025-07-08 10:15:16 63

原创 kswapd占用高

2.zoneinfo占比,大内存50%,小内存65%1.tct_swap开关。3.调整swap水位。

2025-07-08 10:14:29 338

原创 Linux 内存管理:缺页异常的几种原因

使得应用程序认为自己有足够可用的连续内存空间,而实际上,它不仅通常被分割为多个物理内存碎片,而且还有部分存在于磁盘上,每次缺页中断时才调入内存。对这种情况,需要将内核页目录表、页表中对应的映射关系拷贝到进程的页目录表和页表中。给定一个线性地址,MMU 通过页目录表、页表的转换,找到对应的物理地址。在这个过程中,如果因某种原因导致无法访问到最终的物理内存单元,CPU 会产生一次缺页异常,从而进入缺页异常处理。1、导致缺页异常的线性地址根本不在进程的“虚存区间”中,段错误。例如页面是只读的,而你想写。

2025-07-08 10:13:50 385

原创 LMK学习待整理

LowMemoryKiller机制分析 - 简书 (jianshu.com)Android LowMemoryKiller 原理分析_51CTO博客_android low memory killer

2025-07-08 10:13:03 176

原创 AndroidStudio代码阅读快捷键

2025-04-21 10:45:30 301

原创 原生冻结进程分析(U)

进程的OOM_ADJ (Out of Memory Adjustment)值除了决定系统内存不足的时候是否回收该进程,进程冻结策略也是依赖它去计算的。总结一下就是,如果进程的oom adj大于CACHED_APP_MIN_ADJ,就会启动一个10分钟的定时器,在10分钟之内如果进程的oom adj一直没有变回小于CACHED_APP_MIN_ADJ就会冻结进程。进程的执行被暂停:冻结的进程会被暂停,其所有线程的执行将被停止,包括应用程序的主线程以及任何后台线程。提供先进的推理,复杂的指令,更多的创造力。

2024-09-02 06:54:55 1083

原创 Activity的启动流程(AndroidU)

启动有冷热温三种。冷启动:从无到有走完整个启动流程。一般是应用第一次启动。热启动:有应用进程无相关数据,需要重新加载,比如冻结。一般是从多任务进入。温启动:有进程有数据。一般是退出后再次进入。启动流程如下:1.启动准备应用启动是从应用Activity的this.startActivity开始,调用父类Acitivity.startActivity.: /这两个方法都是为了启动新的 Activity,但它们的差别在于第二个方法允许传入额外的启动选项。第一个方法是第二个方法的简化版本,默认将。

2024-08-24 19:36:41 1202

原创 关闭开机关trace的功能

在抓开机启动的trace时,发现trace总是抓不全,测试发现总有代码要关trace,研究去掉关trace的代码。

2024-08-23 15:03:27 405

原创 查杀策略汇总

lmkd冻结cpu高负载swap信号9。

2024-08-23 08:56:56 395

原创 Zram记录

device中加copyfile添加编译fstab。未打开zram时,totalswap为0。init.rc中配置swapon-all。Zram机制的实现,依靠swap机制。fstab中配置zramsize。zram验证生效的顺序。

2024-08-23 08:52:26 549

原创 严格模式报错

部分参考:Android内存泄露分析之StrictMode - 星辰之力 - 博客园 (cnblogs.com)

2024-08-19 17:16:05 269

原创 CPU/GPU性能评估

1.拆分成cpu芯片和GPU芯片,查找提升系数,折算成整体性能。2.使用Antutu跑分,折算成整机性能。

2024-08-19 17:12:44 1560

原创 IO器件性能评估

b,573.8ms的io时长是 573.8 * 29.97%=171.96ms。c,按比例缩放io时间 = 171.96 *(500/300)=286.6ms。比如应用启动过程中的。4,将预估后的增加io时间加到原来操作时间,将此作为此项操作预估时间。3,根据规格书读写能力数据比率,对io占用时间进行预估(等比放大);a,io时长187ms,占比 187/624 = 29.97%2,针对应用操作过程进行分析,识别出过程中io占用时间;1,对比UFS、eMMC的规格书标注的io读写能力。

2024-08-19 17:07:20 255

原创 ADB-DROM

adb shell "echo 0 > /sys/devices/platform/10012000.dvfsrc/helio-dvfsrc/dvfsrc_force_vcore_dvfs_opp" # -1 无限制,0 最大。

2024-08-19 17:04:21 372

原创 CPU绑核

通过CPU亲和性的概念可以提高线程的运行效率,比如由于CPU存在缓存机制,通过CPU亲和性(CPU Affinity)让同一个线程被重新调度时,尽量调度到同一个处理器上,这样就可以可以避免不必要的 Cache Miss。另一种情况,比如对于一组相同的任务,它们需要访问的内存大部分是相同的,如果控制这组任务调度在相同的CPU上,也可以共享相同的cache,从而提高程序的访问效率。如果进程只在某个CPU上执行,可以避免进程在一个CPU上停止执行,然后在不同的CPU上重新执行时发生的缓存无效而引起的性能成本。

2024-08-19 16:57:27 1185

原创 cpu管理

4、intellidemand智能按需调节模式:可根据GPU使用情况来针对性调节cpu频率,GPU负载高时,比如运行游戏和测试的时候,cpu频率会迅速升至最高,这时的调节模式类似于ondemand,当GPU空闲时则会自动限制cpu最高频率,更加省电。2、ondemand按需模式:官方及xray内核默认为此项调节模式,顾名思义,按需调节cpu频率,不操作手机的时候控制在最低频率,滑屏或进入应用后会迅速提升至最高频率,当空闲时迅速降低频率,性能较稳定,但因频率变化幅度过大,省电方面只有一般的水平;

2024-08-19 09:33:24 879

原创 原生HighCPU机制

遍历LRU list所有进程,针对优先级低于PROCESS_STATE_HOME的进程,根据进程状态改变距离现在的时间,设置不同的限制阈值,然后调用updateAppProcessCpuTimeLPr继续检查流程。通过ProcessProfileRecord,计算出进程已经使用CPU的时间,调用checkExcessivePowerUsageLPr函数来检查是否超过限制阈值,如果超过则杀进程。//如果CPU使用时间超过阈值(CPU使用时间除以距离上次检查的时间,cpuLimit可以看做百分比)

2024-08-15 00:19:23 997

原创 Source Insight 4 使用教程

F3 上一个。F4 下一个。

2024-08-15 00:13:33 357

原创 IO问题分析方法及方案

一般都是在anr日志中会有iowait高的打印。

2024-08-07 20:22:51 882 1

原创 MobaXterm使用

说明:这是在当前用户生效(我也没有sudo密码),如不存在文件会自动创建,保存后打开vi即生效。1.默认打开的vi 不带行号。

2024-07-13 16:02:09 507

原创 UML图画法

1.类图中的各种线2.中文破解工具见收藏干货!3分钟掌握UML类图 (zhihu.com)

2024-06-29 20:53:47 124

原创 Linux常用命令

ssh-keygen -t rsa -C "主机名"主要使用在编译服务器中,一般还有samb一起使用。3.copy文件:copy/rcopy。在当前目录查找文件并写入文件。

2024-06-29 20:51:30 347

原创 adb常用命令

方法2:停止APP进程,并且清除这个APP进程产生的所有数据,相当于reset。# 方法1:强制停止APP进程,不会清除APP进程在系统中产生的数据。# 查看prop文件中watermark属性值。# 导入build.prop文件(见文章)# speed-profile优化。# Top列表activity。# 前台activity。# 查看Free RAM。# 所有应用编译状态。# 查看启动应用入口。

2024-05-12 13:26:12 921

原创 adb-cpu常用命令

adb shell "echo powersave > /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor" # 第1簇。adb shell "echo powersave > /sys/devices/system/cpu/cpu2/cpufreq/scaling_governor" # 第1簇。adb shell "cat /proc/cpuhvfs/C0_opp_idx" # 大核。

2024-05-12 13:25:38 1002

原创 vim常用命令

跳转到指定行:n # n是具体行号查找指定文本/a # a是具体文本,点击n键跳转到下一个粘贴外部文本到linux。

2024-05-12 13:25:05 148

原创 adb-GPU常用命令

adb shell "echo 0 > /proc/gpufreqv2/fix_target_opp_index" # -1 无限制,0 最高频。# 当前频率、档位、负载。

2024-05-12 13:24:33 1118

原创 adb-DRAM常用命令

adb shell "echo 0 > /sys/devices/platform/10012000.dvfsrc/helio-dvfsrc/dvfsrc_force_vcore_dvfs_opp" # -1 无限制,0 最大。adb shell "echo 0 > /sys/kernel/helio-dvfsrc/dvfsrc_force_vcore_dvfs_opp" # -1 无限制,0 最大。

2024-05-12 13:23:45 791

原创 adb-抓systrace

表示抓取的时间,默认情况下是。表示抓取文件的输出目录。systrace使用。

2024-05-12 13:22:50 514

原创 git使用

5.查看某个文件的历史修改版本。(上一个commtid)

2024-05-12 13:22:10 416 1

原创 excle使用

注意valouk的筛选只能向后,不能向前。

2024-05-12 13:21:32 229

ViewPager滑动Demo

ViewPager滑动Demo,可以用来做引导页和风光展示页,本例未解决问题: 无限滚动;轮播(估计要开线程实现).

2015-09-02

【h5游戏之我要飞得更高】小帅蹦蹦.rar

【h5游戏之我要飞得更高】小帅蹦蹦.rar ,代码较为复杂,可用于实际项目。本人亲测,欢迎交流。

2015-12-16

BaiduLBS_AndroidSDK_v6.1.3_All

BaiduLBS_AndroidSDK_v6.1.3_All,官网最新的SDK版本,这里只是把他们合在一起打了包。

2015-12-17

【h5游戏之切水果】水果忍者.rar

【h5游戏之切水果】水果忍者.rar,可以用于实际项目中。本人亲测,欢迎交流。

2015-12-16

BaiduMap_AndroidSDK_v3.6.1_All.zip

BaiduMap_AndroidSDK_v3.6.1_All.zip,内含SDK,DEMO,DOC.

2015-12-16

Bmob【快速接入示例】

Bmob【快速接入示例】,这代码很简单,参考了官方文档。配合博文,效果更佳。写的不好,欢迎指正,欢迎相互交流。

2016-04-10

【鸿祥上下拉刷新--框架来着git pulltorefresh】

【鸿祥上下拉刷新--框架来着git pulltorefresh】,找了一些上下拉刷新控件,综合比较,感觉这个是最好的。本人亲测,欢迎交流。

2015-12-14

umeng_android_social_sdk_5.0.1_custom

umeng社会化分享demo,最新的官方资源。分享平台:微信,新浪微博、QQ、QQ空间

2016-01-04

umeng社会化分享之QQ和QQ空间

umeng社会化分享之QQ和QQ空间,认真整理过的,借鉴自官方,直接看com.personalblog.MainActivity中的实现便可。博文地址:喔,还在审核。

2016-01-10

apk反编译工具【含反编译方法】

apk反编译工具【含反编译方法,亲测,简单,方便。若有问题,欢迎喷,来让我们互相伤害吧!

2016-07-26

[情人节专属]纯JS脚本1k大小的3D玫瑰

[情人节专属]纯JS脚本1k大小的3D玫瑰,本人亲测,还不错,嘻嘻。

2016-08-09

umeng统计和更新SDK技术测评

umeng统计和更新SDK技术测评,参考官网后,自己写的简单demo,内含文档和demo源码。笔者水平有限,欢迎相互交流。由于博文暂未通过审核,不想下载的可自查博文。

2016-01-03

【招财进宝手势密码】Fund_Gesture_Lock

【招财进宝手势密码】Fund_Gesture_Lock,找到的手势中,还不错的。对实际项目来说,可以直接用。本人亲测,欢迎交流。

2015-12-14

鸿翔大神的史上简单侧滑

鸿翔大神的史上简单侧滑,据说是史上最简单。确实很简单,而且还有福利。我在项目中使用,发现还有收缩特效的“bug”。欢迎大家交流。

2015-12-29

【鸿祥建行转盘】Android-CircleMenu-master

【鸿祥建行转盘】Android-CircleMenu-master,本人亲测,欢迎交流。

2015-12-14

百度地图中心之坑

先说说现象吧,其实很简单。就是加上地图中心的代码后,地图全白了。我放缩地图,移动地图,白色区域和网格区域都存在。具体常见:http://blog.csdn.net/zinjin_woxin/article/details/52301030。欢迎留言,欢迎共勉。

2016-08-24

【h5游戏之flappytext】

【h5游戏之flappytext】,本人亲测,可以。本应用较为简单,实战需修改。欢迎交流。

2015-12-16

自动填写短信验证码

http://www.jianshu.com/p/3f0718e8f603/comments/2132975;这是详细介绍,感谢这位小伙伴。我自己项目需要,测了一下,是可以用的。之前老的方式不行了啊,可能是手机版本更新的原因吧。

2016-11-29

umeng_thirdlog.zip

20160106_umeng_thirdlog.zip ,基于umeng4.3开发,参考官方文档及demo。该包仅仅包含新浪微博登陆。更多请参见博客:ttp://blog.csdn.net/zinjin_woxin?viewmode=contents

2016-01-16

BaseAnimation1.3版本.rar

BaseAnimation1.3版本.rar ,看了一下,感觉这个版本还不错,其中的很多代码都可以学习。欢迎交流。

2015-12-14

RadiusBorder.zip按钮边框

RadiusBorder.zip按钮边框,完全是下载另外仁兄的,感谢他的分享。该APP展示了矩形边框按钮背景的简单写法。

2015-12-29

8uftp代码上传工具

8uftp代码上传工具,网上下载,随处可见。本人正在使用,杠杠的,还不错。

2015-12-29

commons-lang-2.4-bin.zip

commons-lang-2.4-bin.zip 内含ArrayUtils(用来连接两个字符串数组)

2015-12-25

commons.rar

commons.rar 不是很清楚是干嘛的,是当初寻找连接两个字符串数组时搜到了包集。

2015-12-25

百度地图v3.6.1接入1--基本地图功能.rar

之前找了一些百度地图从Android接入的源码,发现都版本有点老,现在百度地图都到v3.6.1。算了,自己从百度的demo中提取算了。

2015-12-16

umeng第三方登陆技术demo

umeng第三方登陆技术demo,基于umeng4.3开发,参考官方文档及demo。该包仅仅包含新浪微博登陆和QQ登陆。更多请参见博客:ttp://blog.csdn.net/zinjin_woxin?viewmode=contents

2016-01-16

调用百度地图demo

调用百度地图APK,demo很简单,主要是这个uri的调用很简单,主要还是得看使用场景。

2017-03-02

空空如也

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

TA关注的人

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