dvm_lock_sample 解析

本文主要探讨了在阅读ART代码时遇到的dvm_lock_sample函数,它与logcat events log中的锁相关信息密切相关。dvm_lock_sample记录了如进程名、主线程、线程信息、锁等待时间和持有者详情等关键数据。当打印此LOG时,意味着上一个锁持有者已释放锁,当前线程即将获取锁。此外,如果上一个持有者与当前持有者在同一文件,则文件名可能显示为‘-’。

dvm_lock_sample 解析

最近中在看art代码,看到这个函数的时候,想到logcat的events log中有大量的dvm_lock_sameple信息

进程名,主线程?,线程名字,锁等待时间,当前持有者的文件名,行号,上一个持有者文件名,行号,锁等待的百分比

  1. 打印此条LOG的时候,上一个锁的持有者已经释放锁,本线程为下一个锁的持有者,即将获取锁
  2. 上一个持有者的文件名,可能是“-”,表示与持有者是同一个文件。
dvm_lock_sample: [com.banyac.midrive.launcher,1,main,6,SourceFile,234,-,358,1]

art/runtime/monitor_android.cc

void Monitor::LogContentionEvent(Thread* self, uint32_t wait_ms, uint32_t sample_percent,
  
行 107858: 08-14 17:24:02.423 1640 5883 I dvm_lock_sample: [system_server,1,binder:1640_20,407,BroadcastController.java,320,android.content.Intent com.android.server.am.BroadcastController.registerReceiverWithFeatureTraced(android.app.IApplicationThread, java.lang.String, java.lang.String, java.lang.String, android.content.IIntentReceiver, android.content.IntentFilter, java.lang.String, int, int),AppProfilerImpl.java,557,java.lang.String com.android.server.am.AppProfilerImpl.buildMemInfo(com.android.server.am.MemUsageBuilder, boolean, boolean),81] 行 107860: 08-14 17:24:02.449 1640 2309 I dvm_lock_sample: [system_server,1,binder:1640_9,381,ActivityManagerService.java,6775,int com.android.server.am.ActivityManagerService.getUidState(int),AppProfilerImpl.java,557,java.lang.String com.android.server.am.AppProfilerImpl.buildMemInfo(com.android.server.am.MemUsageBuilder, boolean, boolean),76] 行 107861: 08-14 17:24:02.452 1640 2575 I dvm_lock_sample: [system_server,1,binder:1640_E,321,ActivityManagerService.java,6838,void com.android.server.am.ActivityManagerService.getProcessStatesAndOomScoresForPIDs(int[], int[], int[]),AppProfilerImpl.java,557,java.lang.String com.android.server.am.AppProfilerImpl.buildMemInfo(com.android.server.am.MemUsageBuilder, boolean, boolean),64] 行 107867: 08-14 17:24:02.903 1640 3470 I dvm_lock_sample: [system_server,1,binder:1640_12,906,ContentProviderHelper.java,180,android.app.ContentProviderHolder com.android.server.am.ContentProviderHelper.getContentProviderImpl(android.app.IApplicationThread, java.lang.String, android.os.IBinder, int, java.lang.String, java.lang.String, boolean, int),AppProfilerImpl.java,565,java.lang.String com.android.server.am.AppProfilerImpl.buildMemInfo(com.android.server.am.MemUsageBuilder, boolean, boolean),100] 行 109482: 08-14 17:24:41.343 1640 6363 I dvm_lock_sample: [system_server,0,AnrConsumer,266,AppProfilerImpl.java,573,java.util.ArrayList com.android.server.am.AppProfilerImpl.collectProcessMemInfos(java.util.function.Predicate),,0,null,53]
08-24
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值