Software bloat is code that is packaged in an application but is actually not used and not necessary to run the application. The presence of bloat is an issue for software security, for performance, and for maintenance. In this paper, we introduce a novel technique to debloat Java bytecode through dynamic analysis, which we call trace-based debloat. We have developed JDBL, a tool that automates the collection of accurate execution traces and the debloating process. Given a Java project and a workload, JDBL generates a debloated version of the project that is syntactically correct and preserves the original behavior, modulo the workload. We evaluate JDBL by debloating 395 open-source Java libraries for a total 10M+ lines of code. Our results indicate that JDBL succeeds in debloating 62.2 % of the classes, and 20.5 % of the dependencies in the studied libraries. Meanwhile, we present the first experiment that assesses the quality of debloated libraries with respect to 1,066 clients of these libraries. We show that 957/1,001 (95.6 %) of the clients successfully compile, and 229/283 (80.9 %) clients can successfully run their test suite, after the drastic code removal among their libraries.


翻译:软件 bloat 是应用程序中包装的代码, 但实际上没有使用, 也没有必要运行应用程序 。 bloat 的存在是一个软件安全、 性能和维护的问题 。 在本文中, 我们引入了一种通过动态分析( 我们称之为基于追踪的脱线) 来拆解 Java 字节码的新技术 。 我们开发了 JDBL 工具, 这个工具可以自动收集准确的执行痕迹和拆解过程 。 鉴于一个 Java 项目和工作量, JDBL 生成了一个拆解版的项目, 它在方法上是正确的, 保存了原始行为, 并调节了工作量 。 我们通过拆解395 开的开放源 Java 库来评估 JDBL 总共10M+ 代码行 。 我们的结果表明, JDBL 成功拆解了62% 和 20.5% 。 同时, 我们展示了第一个实验, 评估拆解图书馆质量的图书馆质量与 1 066 客户的关系, 并保存了原始行为, 调节了工作量。 我们展示了 957/ 1 客户 的9.1% 测试了 。

0
下载
关闭预览

相关内容

Java 是一门编程语言,拥有跨平台、面向对象、泛型编程等特性。
专知会员服务
55+阅读 · 2021年3月15日
Linux导论,Introduction to Linux,96页ppt
专知会员服务
77+阅读 · 2020年7月26日
Keras François Chollet 《Deep Learning with Python 》, 386页pdf
专知会员服务
151+阅读 · 2019年10月12日
[综述]深度学习下的场景文本检测与识别
专知会员服务
77+阅读 · 2019年10月10日
【SIGGRAPH2019】TensorFlow 2.0深度学习计算机图形学应用
专知会员服务
39+阅读 · 2019年10月9日
LibRec 精选:AutoML for Contextual Bandits
LibRec智能推荐
7+阅读 · 2019年9月19日
CCF推荐 | 国际会议信息8条
Call4Papers
9+阅读 · 2019年5月23日
【TED】生命中的每一年的智慧
英语演讲视频每日一推
9+阅读 · 2019年1月29日
A Technical Overview of AI & ML in 2018 & Trends for 2019
待字闺中
16+阅读 · 2018年12月24日
Facebook PyText 在 Github 上开源了
AINLP
7+阅读 · 2018年12月14日
已删除
将门创投
5+阅读 · 2018年6月7日
分布式TensorFlow入门指南
机器学习研究会
4+阅读 · 2017年11月28日
Capsule Networks解析
机器学习研究会
11+阅读 · 2017年11月12日
【推荐】树莓派/OpenCV/dlib人脸定位/瞌睡检测
机器学习研究会
9+阅读 · 2017年10月24日
Arxiv
0+阅读 · 2021年7月2日
Universal Transformers
Arxiv
5+阅读 · 2019年3月5日
Rapid Customization for Event Extraction
Arxiv
7+阅读 · 2018年9月20日
VIP会员
相关资讯
LibRec 精选:AutoML for Contextual Bandits
LibRec智能推荐
7+阅读 · 2019年9月19日
CCF推荐 | 国际会议信息8条
Call4Papers
9+阅读 · 2019年5月23日
【TED】生命中的每一年的智慧
英语演讲视频每日一推
9+阅读 · 2019年1月29日
A Technical Overview of AI & ML in 2018 & Trends for 2019
待字闺中
16+阅读 · 2018年12月24日
Facebook PyText 在 Github 上开源了
AINLP
7+阅读 · 2018年12月14日
已删除
将门创投
5+阅读 · 2018年6月7日
分布式TensorFlow入门指南
机器学习研究会
4+阅读 · 2017年11月28日
Capsule Networks解析
机器学习研究会
11+阅读 · 2017年11月12日
【推荐】树莓派/OpenCV/dlib人脸定位/瞌睡检测
机器学习研究会
9+阅读 · 2017年10月24日
Top
微信扫码咨询专知VIP会员