binder_mmap目前在代码中size为:
BINDER_VM_SIZE
查看应用启动时长
am start -W -n com.example.appstart.preview/com.example.MainActivity
在构造HWComposer对象时,选择了VSync信号产生方式:1.硬件产生;2.软件模拟产生;假如当前系统可以成功加载HWC_HARDWARE_MODULE_ID=hwcomposer,并且通过这个库能顺利打开设备(hwc_composer_device_t),并且其版本号又大于HWC_DEVICE_API_VERSION_0_3的话,我们就采用硬件方式产生VSync,否则需要创建一个新的VSync线程来模拟产生信号。
Q家抓FTRACE
分析surfacefligner dump小技巧:
从dump出来的layer的信息来看,在黑屏的时候,UsbSettings界面的visibleRegion是0,所以这个layer并没有被composer到底层,导致黑屏的时候画出来的是imagewallpaper。
+ Layer 0x7f94885000 (com.android.settings/com.android.settings.activities.UsbSettings)
Region transparentRegion (this=0x7f948851e0, count=1)
[ 0, 0, 0, 0]
Region visibleRegion (this=0x7f94885010, count=1)
[ 0, 0, 0, 0]
场景 | GC次数 | 单次GC平均值 | GC总耗时时长 | 开机使用内存 |
默认场景 | 29 | 98.43 | 2854 | 806MB |
512k-8m | 28 | 149.29 | 4180 | 857MB |
4m-8m | 21 | 215.64 | 4528 | 880MB |
一般情况下只需要0xE即可
需要使用如下命令:
adb shell setprop debug.atrace.tags.enableflags 0xE
adb shell "setprop debug.egl.traceGpuCompletion 1"
adb shell stop
adb shell start
2 .双击打开ftrace_all_in_one里面的01-catch.bat,按照提示按任意键开始,然后开始模拟你认为卡顿的操作,但卡顿发生之后,按照提示按任意键结束,待01-catch.bat运行完后自动会退出。
3.双击打开02-parse.bat,结束后会自动生成trace.html
4.上传trace.html 给我们分析(请告诉我们卡顿发生几秒后停止录Ftrace的,便于我们找到相关时间点)
mount | grep data
/dev/block/bootdevice/by-name/userdata /data
userdata -> /dev/block/mmcblk0p42
(1)修改init.rc增加如下(相关于执行ulimit -c unlimited)
setrlimit 4 -1 -1
write /proc/sys/kernel/core_pattern "/local/log/core-%e-%p-%t"
(2)也需要增加如下脚本:
echo "1" > /proc/sys/kernel/core_uses_pid //允许文件名后加pid
echo "/local/log/core-%e-%p" > /proc/sys/kernel/core_pattern
echo 1 > /proc/sys/fs/suid_dumpable