首页> 外文期刊>ACM SIGPLAN Notices: A Monthly Publication of the Special Interest Group on Programming Languages >A Generational On-the-fly Garbage Collector for Java (Extended Abstract)
【24h】

A Generational On-the-fly Garbage Collector for Java (Extended Abstract)

机译:适用于Java的世代实时垃圾收集器(扩展摘要)

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

摘要

An on-the-fly garbage collector does not stop the program threads to perform the collection. Instead, the collector executes in a separate thread (or process) in parallel to the program. On-the-fly collectors are useful for multi-threaded applications running on multiprocessor servers, where it is important to fully utilize all processors and provide even response time, especially for systems for which stopping the threads is a costly operation. In this work, we report on the incorporation of generations into an on-the-fly garbage collector. The incorporation is non-trivial since an on-the-fly collector avoids explicit synchronization with the program threads. To the best of our knowledge, such an incorporation has not been tried before. We have implemented the collector for a prototype Java Virtual Machine on AIX, and measured its performance on a 4-way multiprocessor. As for other generational collectors, an on-the-fly generational collector has the potential for reducing the overall running time and working set of an application by concentrating collection efforts on the young objects. However, in contrast to other generational collectors, on-the-fly collectors do not move the objects; thus, there is no segregation between the old and the young objects. Furthermore, on-the-fly collectors do not stop the threads, so there is no extra benefit for the short pauses obtained by generational collection. Nevertheless, comparing our on-the-fly collector with and without generations, it turns out that the generational collector performs better for most applications. The best reduction in overall running time for the benchmarks we measured was 25%. However, there were some benchmarks for which it had no effect and one for which the overall running time increased by 4%.
机译:即时垃圾收集器不会停止程序线程来执行收集。相反,收集器在与程序并行的单独线程(或进程)中执行。动态收集器对于在多处理器服务器上运行的多线程应用程序很有用,在该服务器上,充分利用所有处理器并提供均匀的响应时间非常重要,尤其是对于那些停止线程是一项昂贵操作的系统而言。在这项工作中,我们报告了将代集成到动态垃圾收集器中的情况。合并是不平凡的,因为即时收集器可避免与程序线程的显式同步。就我们所知,这种合并以前从未尝试过。我们已经在AIX上为原型Java虚拟机实现了收集器,并在4路多处理器上测量了其性能。与其他世代收集器一样,即时世代收集器具有通过将收集工作集中在年轻对象上来减少应用程序的总运行时间和工作集的潜力。但是,与其他世代的收集器相比,即时收集器不会移动物体;因此,在旧物体和年轻物体之间没有隔离。此外,即时收集器不会停止线程,因此世代收集获得的短暂停顿没有额外的好处。尽管如此,将我们的即时收集器与无代收集器和无代收集器进行比较,事实证明,对于大多数应用程序,代收集器的性能更好。对于我们测得的基准,总体运行时间最多减少了25%。但是,有些基准对其没有影响,而总运行时间却增加了4%。

著录项

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号