dvm_lock_sample解析


dvm_lock_sample:当某个线程等待lock的时间blocked超过阈值(比如:500ms),则输出当前的持锁状态.

 dvm_lock_sample: [system_server,1,Binder_9,1500,ActivityManagerService.java,6403,-,1448,0]
说明:system_server: Binder_9,执行到ActivityManagerService.java的6403行代码,一直在等待AMS锁, "-"代表持锁的是同一个文件,

即该锁被同一文件的1448行代码所持有, 从而导致Binder_9线程被阻塞1500ms.
------------------------------------------------------------------
dvm_lock_sample 会打印出系统主线程的一些主要方法耗费了多少时间
dvm_lock_sample:[system_server,1,Binder:1614_A,22,AlarmManagerService.java,1072,-,2496,4] 
(进程名,是否主线程1是0否,线程号,花费时间,文件名,申请锁行数,持锁文件名,持锁行数,采样频率)
-----------------------------------------------------------------

03-06 13:56:00.928  1160  1740 I dvm_lock_sample: [system_server,1,Binder:1160_6,22574,ActivityTaskManagerService.java,1850,void com.android.server.wm.ActivityTaskManagerService.activityTopResumedStateLost(android.os.IBinder),
TaskChangeNotificationController.java,351,void com.android.server.wm.TaskChangeNotificationController.forAllLocalListeners(com.android.server.wm.TaskChangeNotificationController$TaskStackConsumer, android.os.Message),100]

通过分析log,在13:56:00.927节点的时候,TaskChangeNotificationController.forAllLocalListeners()方法持有了WindowManagerGlobalLock锁导致ActivityTaskManagerService.activityTopResumedStateLost()方法一直在等待WindowManagerGlobalLock锁释放,等待时长为22.574 s

TaskChangeNotificationController.forAllLocalListeners

private void forAllLocalListeners(TaskStackConsumer callback, Message message) {
    synchronized (mServiceLock) {
        for (int i = mLocalTaskStackListeners.size() - 1; i >= 0; i--) {
            try {
                callback.accept(mLocalTaskStackListeners.get(i), message);
            } catch (RemoteException e) {
                // Never thrown since this is called locally.
            }
        }
    }
}


该方法中持有了WindowManagerGlobalLock锁,然后执行了for循环,执行callback回调

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值