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