- 博客(12)
- 资源 (1)
- 收藏
- 关注
原创 Profile 工具系列之四:simpleperf
关于 simpleperf simpleperf 是 google 随 NDK 一起发布的一款 profile 工具,从 NDK r13 开始 官方文档请参考 google 在 NDK 里放的 README HelloWorld 步骤 把 simpleperf 可执行程序 push 到手机上。 simpleperf 在 NDK-r13b 的 simpleperf/android/ 里。根据被测程序和
2017-05-29 08:41:23
10471
原创 Profile 工具系列之三:oprofile(Android,未成功)
写在前面 本文研究了一下用 oprofile 在 Android 做 profile 之后,最终弃用 原因之一是编译内核比较麻烦(oprofile 需要内核的配合) 原因之二是从 Android N 开始,官方已经不再使用 oprofile 原因之三是找到了好的替代品:simpleperf 关于 oprofile关于正常的 Oprofile(Linux 下的): 参考: http://www.cnb
2017-05-28 23:18:12
2100
原创 Profile 工具系列之二: gperftools
简介 gperftools 原名 Google Performance Tools,是一套可以做 profile 的工具,由 google 提供。 目前看来在 Linux 上特别的好使,Windows 基本不能用(官网说 Windows 正在开发,不知道会不会有下文) CPU profile 只是这个工具其中一个 feature,我们就用这个 feature。 其他 feature 还有 tcmal
2017-05-22 13:13:14
4509
原创 基于 Binder 的跨进程通信以及 Service(二):Java 层
同进程使用Service(一) 比如,你做了一个音乐播放 app,里面有一个 MusicService 负责后台播放音乐,对外提供 play(),pause() 的接口 你在一个 Activity 里想调用这个 Service 的 play(),怎么搞? 必须在这个 Activity 里拿到刚才启动的 MusicService 的实例,但这是不可能的。Service 实例是由安卓OS维护的,你拿不到
2017-05-14 23:37:56
731
原创 基于 Binder 的跨进程通信以及 Service(一):Native 层
写在前面 本文集中讲的是 Native 层的 Binder 通信以及 Service Java 层的在下一篇里单讲 理论基础1. 服务是什么? 可以简单的把服务理解为进程里的一个对象,它能干活,而且能被别的进程“引用”。 比如你搞了个进程,里面 new 了一个 MyWorker 对象,该对象可以被其他进程“引用”,并调用它的 do_work() 函数来干活。那么这个对象就是一个服务。 一个对象想成为
2017-05-09 09:21:50
780
原创 zygote 和 app 的启动过程
写在前面 zygote 是在一个 Android Linux 上的一个进程 zygote 进程在启动的过程中,fork 出了 system_server 进程 zygote 进程稳定后,就在自己的主循环里等待客户端连接自己执行命令 system_server 进程里面跑着很多 Android 系统的 Service,包括 ActivityManagerService 用户 app 进程,都是从 zy
2017-05-07 11:46:39
979
原创 Profile 工具系列之一:gprof
先说结论 gprof 在目前来说,在 profile 界并没有明显优势 首先是对动态库支持不好 其次它基本可以被 gperftools 取代 所以没兴趣的就不必往下看了 用法 gcc 编译时带上 -pg 参数,运行程序时就会生成 gmon.out 文件 然后用 gprof 命令分析该文件 gcc 的 -pg 参数You must use this option when compiling the
2017-05-07 11:24:40
3397
原创 JNI 原理进阶
回顾JNI 要点 Java 要 load 库 Java 要把方法声明为 native 的 C 语言实现 Java 的 native 方法时,函数名有固定形式,可以用 javah 生成头文件得到函数名 Java 调用 C 函数时,JVM 会自动传两个参数下去: 分别是 JNIEnv * 和 jobject 类型的 层:Java -> JNI -> Native 分三层 最上面是 Java 层 中间是
2017-05-02 14:56:08
992
原创 JNI 原理与入门
JNI 是什么 HelloWorld 编写 java 文件 编译 java 文件 编写 c 语言文件 编译 c 语言文件 运行 Android 中的 JNI 简介 NDK Native 层和 JNI 层 附录 附录1让 Java 自动帮我们生成C函数名 附录2如何生成 dll 方法1 使用 VisualStudio 方法2 使用 cl 命令行 JNI 是什么 JNI = Java Native In
2017-05-01 21:05:21
366
原创 欢迎使用CSDN-markdown编辑器
CSDN支持Markdown写博客了本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和图片上传 LaTex数学公式 UML序列图和流程图 离线写博客 导入导出Markdown文件 丰富的快捷键 快捷键 加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl
2017-05-01 09:35:35
296
转载 vs.net 2005, 没有找到MSVCR80D.dll的解决方案
在“属性->配置属性->清单工具->常规“下有一个”使用FAT32解决办法,把它选成是,就可以了。(注意:一定要先配置这个选项,然后再编译工程,要不然还是不好用:)
2010-03-10 09:00:00
400
原创 在winXP下返回当前线程所在CPU(多核)的方法
在vista win2003 win7(函数略有不同)中,都有专门的api返回当前线程所在的cpu,但xp下就没有,只能自己搞。一下是在国外一网站上找的自己写的函数来实现这一功能:(注:vista win2003 的api是GetCurrentProcessorNumber() win7是GetCurrentProcessorNumberEx() ) GetCurrentPr
2010-03-09 21:28:00
2030
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅