Meta 开源 Android Java 的静态死锁检测器
Meta (原 FaceBook)开发了一种新的静态分析器,它可以在 Android 的 Java 代码中捕获死锁,而无需运行代码。该死锁检测器是开源的 Infer 静态分析框架的一部分。
据工程师 Nikos Gorogiannis 介绍,新的死锁检测器能够分析具有数亿行代码的代码库的修订,目前已经在 Meta 的持续集成系统中部署,它会扫描对 Android 应用程序系列的每个提交。在过去两年中,Meta 开发人员针对它的死锁报告采取了 200 多项修复措施,修复率约为 54%。
该检测器如何运作?
该分析器使用抽象解释技术来设计。对于每个方法,分析器都会计算方法在获取和释放锁方面的行为摘要,以及该方法是在主线程还是在后台线程上运行。然后使用一个关键对 (A,B) 记录了以下事实:该方法试图获取锁 B,而此时,它已经精确地持有集合 A 中的锁。以上数据通过所有方法的计算得出,足以让判断两个并发方法之间是否可能出现死锁问题。
为了快速高效,该工具还避免分析应用程序中的所有源文件。相反,它首先处理已修改文件的所有方法。然后基于该数据应用启发式方法,来定位修改文件之外的方法,这些方法可能与修改版本中的一种方法发生死锁。
死锁通常是不可恢复的错误,也是非常难以诊断的错误,因为线程调度本质上是不确定的。因此,死锁的测试可能需要运行数千或数百万次才能显示问题,那么无需运行甚至构建代码即可静态地检测死锁就非常有价值。
Nikos Gorogiannis 称其团队的方法已实现了死锁分析这一目标,同时也使其具有足够的可扩展性,可以在大型代码库上部署分析器。
相关链接:

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
GraphVis —— 图可视化分析组件库
GraphVis 图可视化分析组件库是一款基于javascript开发的原生前端组件库。 组件优势: 1、开源,基于canvas的可视化库、布局算法库、聚类算法库均开源可用,有丰富的使用示例。 2、使用简单,设置配置传入数据后会自动进行可视化关系数据展示。 3、算法丰富,提供了默认的网络分析算法、图布局算法、聚类分析算法等扩展组件库。 4、支持定制化开发,开放定制化接口,开发人员可以根据业务需要定制化开发节点、连线效果,而无需管理复杂的事件处理和算法细节。提升开发效率。
- 下一篇
Windows 11 为其 Android 子系统推送多项更新
Windows Subsystem for Androi 简称 WSA,是适用于 Windows 的 Android 子系统,主要功能是让 Windows 11 设备能够运行 Android 应用。 近日 Windows 11 预览体验团队为 WSA 推送了多项更新,包括对视频播放、Windows 集成和安全更新的一些重大更改。 H.264 视频硬件解码 该更新允许 WSA 利用硬件加速 H.264 解码,可以在利用高清视频播放的多个 Android 应用程序上提供更好的体验。 网络变化 该更新带来了 WSA 平台中的网络更改,让 Android 应用有更流畅的网络连接。(该更新项该在继续完善中) 邮件集成 改进了 Windows 与 WSA 的集成,在此更新中,Windows 电子邮件客户端和移动端应用程序之间的集成得到了改进,使用邮件客户端或邮件消息的应用程序可从中受益。 MSAA(多采样抗锯齿)更改 虽然 MSAA 对一些游戏应用程序来说是一项有用的功能,但有用户报告说无法禁用 4X MSAA,因此 WSA 不再强制启用抗锯齿,MSAA 成为一个可选项。 输入改进 改进了WSA ...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Windows10,CentOS7,CentOS8安装Nodejs环境
- Red5直播服务器,属于Java语言的直播服务器
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker使用Oracle官方镜像安装(12C,18C,19C)