Software bloat is code that is packaged in an application but is actually not necessary to run the application. The presence of software bloat is an issue for security, for performance, and for maintenance. In this paper, we introduce a novel technique for debloating Java bytecode, which we call coverage-based debloating. We leverage a combination of state-of-the-art Java bytecode coverage tools to precisely capture what parts of a project and its dependencies are used at runtime. Then, we automatically remove the parts that are not covered to generate a debloated version of the compiled project. We successfully generate debloated versions of 220 open-source Java libraries, which are syntactically correct and preserve their original behavior according to the workload. Our results indicate that 68.3% of the libraries' bytecode and 20.5% of their total dependencies can be removed through coverage-based debloating. Meanwhile, we present the first experiment that assesses the utility of debloated libraries with respect to client applications that reuse them. We show that 80.9% of the clients with at least one test that uses the library successfully compile and pass their test suite when the original library is replaced by its debloated version.


翻译:软件 bloat 是应用程序中包装的代码, 但实际上并不需要运行应用程序 。 软件 bloat 的存在是一个安全、 性能和维护问题 。 在本文中, 我们引入了一种新颖的拆解 Java 位数代码的新技术, 我们称之为基于覆盖的拆解。 我们利用了一套最新水平的 Java 位数覆盖工具来精确地捕捉运行时使用项目的各个部分及其依赖性 。 然后, 我们自动删除了未覆盖的部分, 以生成已编集的项目的拆解版本 。 我们成功地生成了220 个开源 Java 图书馆的拆解版本, 这些图书馆在同步性上是正确的, 并根据工作量来保存原始行为 。 我们的结果表明, 图书馆的68. 3% 的源数和 20. 5% 的总依赖性可以通过基于覆盖的拆解解密来去除 。 同时, 我们展示了第一次实验, 评估拆解的图书馆对客户应用程序的效用, 来再利用它们。 我们展示了80.9%的客户, 在一次测试时, 其原始版本中, 将使用图书馆的版本成功的版本替换。

0
下载
关闭预览

相关内容

Java 是一门编程语言,拥有跨平台、面向对象、泛型编程等特性。
专知会员服务
76+阅读 · 2021年3月16日
【干货书】'Mastering Go 第二版中文版',143页pdf
专知会员服务
47+阅读 · 2020年11月1日
专知会员服务
123+阅读 · 2020年9月8日
专知会员服务
39+阅读 · 2020年9月6日
【经典书】C语言傻瓜式入门(第二版),411页pdf
专知会员服务
51+阅读 · 2020年8月16日
Linux导论,Introduction to Linux,96页ppt
专知会员服务
77+阅读 · 2020年7月26日
Hierarchically Structured Meta-learning
CreateAMind
26+阅读 · 2019年5月22日
强化学习的Unsupervised Meta-Learning
CreateAMind
17+阅读 · 2019年1月7日
利用动态深度学习预测金融时间序列基于Python
量化投资与机器学习
18+阅读 · 2018年10月30日
计算机类 | SIGMETRICS 2019等国际会议信息7条
Call4Papers
9+阅读 · 2018年10月23日
【推荐】手把手深度学习模型部署指南
机器学习研究会
5+阅读 · 2018年1月23日
分布式TensorFlow入门指南
机器学习研究会
4+阅读 · 2017年11月28日
【推荐】YOLO实时目标检测(6fps)
机器学习研究会
20+阅读 · 2017年11月5日
【学习】(Python)SVM数据分类
机器学习研究会
6+阅读 · 2017年10月15日
Auto-Encoding GAN
CreateAMind
7+阅读 · 2017年8月4日
Arxiv
0+阅读 · 2022年2月11日
Arxiv
4+阅读 · 2018年12月20日
VIP会员
相关VIP内容
专知会员服务
76+阅读 · 2021年3月16日
【干货书】'Mastering Go 第二版中文版',143页pdf
专知会员服务
47+阅读 · 2020年11月1日
专知会员服务
123+阅读 · 2020年9月8日
专知会员服务
39+阅读 · 2020年9月6日
【经典书】C语言傻瓜式入门(第二版),411页pdf
专知会员服务
51+阅读 · 2020年8月16日
Linux导论,Introduction to Linux,96页ppt
专知会员服务
77+阅读 · 2020年7月26日
相关资讯
Hierarchically Structured Meta-learning
CreateAMind
26+阅读 · 2019年5月22日
强化学习的Unsupervised Meta-Learning
CreateAMind
17+阅读 · 2019年1月7日
利用动态深度学习预测金融时间序列基于Python
量化投资与机器学习
18+阅读 · 2018年10月30日
计算机类 | SIGMETRICS 2019等国际会议信息7条
Call4Papers
9+阅读 · 2018年10月23日
【推荐】手把手深度学习模型部署指南
机器学习研究会
5+阅读 · 2018年1月23日
分布式TensorFlow入门指南
机器学习研究会
4+阅读 · 2017年11月28日
【推荐】YOLO实时目标检测(6fps)
机器学习研究会
20+阅读 · 2017年11月5日
【学习】(Python)SVM数据分类
机器学习研究会
6+阅读 · 2017年10月15日
Auto-Encoding GAN
CreateAMind
7+阅读 · 2017年8月4日
Top
微信扫码咨询专知VIP会员