首页> 外文会议>17th European Conference on Object-Oriented Programming ECOOP 2003 Jul 21-25, 2003 Darmstadt, Germany >LeakBot: An Automated and Lightweight Tool for Diagnosing Memory Leaks in Large Java Applications
【24h】

LeakBot: An Automated and Lightweight Tool for Diagnosing Memory Leaks in Large Java Applications

机译:LeakBot:用于诊断大型Java应用程序中的内存泄漏的自动化轻量级工具

获取原文
获取原文并翻译 | 示例

摘要

Despite Java's automatic reclamation of memory, memory leaks remain an important problem. For example, we frequently encounter memory leaks that cause production servers to crash. These servers represent an increasingly common class of Java applications: they are large scale and they make heavy use of frameworks. For these applications, existing tools require too much expertise, and, even for experts, require many hours interpreting low-level details. In addition, they are often too expensive to use in practice. We present an automated, adaptive, and scalable tool for diagnosing memory leaks, called LeakBot. LeakBot incorporates three new techniques. First, it automatically ranks data structures by their likelihood of containing leaks. This process dramatically prunes the set of candidate structures, using object reference graph properties and knowledge of how leaks occur. Second, it uses Co-evolving Regions to identify suspicious regions within a data structure and characterize their expected evolution. Third, it uses the first two methods to derive a lightweight way to track those regions' actual evolution as the program runs. These techniques are mutually beneficial: we need only monitor what is highly ranked, and, because the tracking is so cheap, a region's rank can be continually updated with information from production machines. Finally, this whole process can be done without user assistance. We demonstrate LeakBot's effectiveness on a number of large-scale applications that we have analyzed as part of the ongoing consulting practice our group maintains. We have found that the ranking analysis scales (e.g. written in Java, it analyzes 10~6 objects in 30 seconds with a 300M heap), is selective (e.g. it prunes that set to three candidate leak roots), and is accurate (it discounts non-leaking roots). The CER generation completes in tens of seconds. The lightweight tracking refines the rankings, while lowering throughput by less than 5%.
机译:尽管Java自动回收内存,但是内存泄漏仍然是一个重要问题。例如,我们经常遇到导致生产服务器崩溃的内存泄漏。这些服务器代表了越来越常见的Java应用程序类:它们规模庞大并且大量使用框架。对于这些应用程序,现有工具需要太多的专业知识,甚至对于专家而言,也需要大量时间来解释底层细节。另外,它们在实践中通常太昂贵而无法使用。我们提供了一种用于诊断内存泄漏的自动,自适应且可扩展的工具,称为LeakBot。 LeakBot结合了三种新技术。首先,它根据包含泄漏的可能性自动对数据结构进行排名。该过程使用对象参考图的属性以及有关泄漏如何发生的知识,大大减少了候选结构的集合。其次,它使用共同演化区域来识别数据结构中的可疑区域并表征其预期的演化。第三,它使用前两种方法来导出一种轻量级的方法,以在程序运行时跟踪这些区域的实际演变。这些技术是互惠互利的:我们只需要监视排名靠前的内容,并且由于跟踪非常便宜,因此可以使用生产机器中的信息不断更新区域的排名。最后,无需用户协助即可完成整个过程。我们证明了LeakBot在许多大型应用程序上的有效性,这些数据已作为我们小组维护的持续咨询实践的一部分进行了分析。我们发现排名分析标度(例如,用Java编写,可以在30秒内用300M堆分析10〜6个对象),具有选择性(例如,修剪设置为三个候选泄漏根),并且准确(折扣)不漏根)。 CER生成在数十秒内完成。轻量级跟踪优化了排名,同时将吞吐量降低了不到5%。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号