skip to main content
research-article

Data structure aware garbage collector

Published:14 June 2015Publication History
Skip Abstract Section

Abstract

Garbage collection may benefit greatly from knowledge about program behavior, but most managed languages do not provide means for the programmer to deliver such knowledge. In this work we propose a very simple interface that requires minor programmer effort and achieves substantial performance and scalability improvements. In particular, we focus on the common use of data structures or collections for organizing data on the heap. We let the program notify the collector which classes represent nodes of data structures and also when such nodes are being removed from their data structures. The data-structure aware (DSA) garbage collector uses this information to improve performance, locality, and load balancing. Experience shows that this interface requires a minor modification of the application. Measurements show that for some significant benchmarks this interface can dramatically reduce the time spent on garbage collection and also improve the overall program performance.

References

  1. E. E. Aftandilian and S. Z. Guyer. Gc assertions: using the garbage collector to check heap properties. In PLDI, pages 235–244, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. B. Alpern, C. R. Attanasio, J. J. Barton, M. G. Burke, P. Cheng, J.-D. Choi, A. Cocchi, S. J. Fink, D. Grove, M. Hind, S. F. Hummel, D. Lieber, V. Litvinov, M. Mergen, T. Ngo, J. R. Russell, V. Sarkar, M. J. Serrano, J. Shepherd, S. Smith, V. C. Sreedhar, H. Srinivasan, and J. Whaley. The jalapeno virtual machine. IBM Systems Journal, 39(1):211– 238, 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. K. Barabash and E. Petrank. Tracing garbage collection on highly parallel platforms. In ISMM, pages 1–10. ACM, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. K. Barabash, O. Ben-Yitzhak, I. Goft, E. K. Kolodner, V. Leikehman, Y. Ossia, A. Owshanko, and E. Petrank. A parallel, incremental, mostly concurrent garbage collector for servers. ACM Transactions on Programming Languages and Systems, 27(6):1097–1146, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. S. M. Blackburn and K. S. McKinley. Ulterior reference counting: Fast garbage collection without a long wait. In OOPSLA, volume 38, pages 344–358. ACM, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. S. M. Blackburn and K. S. McKinley. Immix: a mark-region garbage collector with space efficiency, fast collection, and mutator performance. In PLDI, volume 43, pages 22–32. ACM, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. S. M. Blackburn, R. Garner, C. Hoffmann, A. M. Khang, K. S. McKinley, R. Bentzur, A. Diwan, D. Feinberg, D. Frampton, S. Z. Guyer, et al. The dacapo benchmarks: Java benchmarking development and analysis. In ACM Sigplan Notices, volume 41, pages 169–190. ACM, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. D. Buytaert, K. Venstermans, L. Eeckhout, and K. De Bosschere. Gch: Hints for triggering garbage collections. In Transactions on High-Performance Embedded Architectures and Compilers I, pages 74–94. Springer, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. S. Cherem and R. Rugina. Compile-time deallocation of individual objects. In ISMM, pages 138–149. ACM, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. J. E. Cook, A. L. Wolf, and B. G. Zorn. A highly effective partition selection policy for object database garbage collection. Transactions on Knowledge and Data Engineering, 10 (1):153–172, 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. D. Detlefs and T. Printezis. A generational mostly-concurrent garbage collector. Technical report, Sun Microsystems, 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. T. Domani, E. K. Kolodner, and E. Petrank. A generational on-the-fly garbage collector for java. In PLDI, volume 35, pages 274–284. ACM, 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. H. Eran and E. Petrank. A study of data structures with a deep heap shape. In MSPC. ACM, 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. R. Garner, S. M. Blackburn, and D. Frampton. Effective prefetch for mark-sweep garbage collection. In ISMM, pages 43–54. ACM, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. S. Z. Guyer, K. S. McKinley, and D. Frampton. Free-me: a static analysis for automatic individual object reclamation. PLDI, pages 364–375, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. M. Hertz, Y. Feng, and E. D. Berger. Garbage collection without paging. In PLDI, volume 40, pages 143–153. ACM, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. M. Hicks, G. Morrisett, D. Grossman, and T. Jim. Experience with safe manual memory-management in cyclone. In ISMM, pages 73–84. ACM, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. H. Kermany and E. Petrank. The compressor: concurrent, incremental, and parallel compaction. In PLDI, pages 354– 363, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. KittyCache. Kittycache. https://code.google.com/p/kittycache/, 2009.Google ScholarGoogle Scholar
  20. Y. Levanoni and E. Petrank. An on-the-fly reference counting garbage collector for java. In OOPSLA, pages 367–380, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. Y. Ossia, O. Ben-Yitzhak, I. Goft, E. K. Kolodner, V. Leikehman, and A. Owshanko. A parallel, incremental and concurrent gc for servers. In PLDI, pages 129–140, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. P. Reames and G. Necula. Towards hinted collection: annotations for decreasing garbage collector pause times. In ISMM, pages 3–14. ACM, 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. N. Sachindran, J. E. B. Moss, and E. D. Berger. mc 2 : highperformance garbage collection for memory-constrained environments. OOPSLA, 39(10):81–98, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. R. Shahriyar, S. M. Blackburn, X. Yang, and K. S. McKinley. Taking off the gloves with reference counting immix. In OOPSLA, pages 93–110, 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. Y. Shuf, M. Gupta, R. Bordawekar, and J. P. Singh. Exploiting prolific types for memory management and optimizations. Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages, pages 295–306, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. F. Siebert. Limits of parallel marking collection. In ISMM, pages 21–29. ACM, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. SPEC. Specjbb2005. http://www.spec.org/jbb2005/, 2005.Google ScholarGoogle Scholar
  28. T. Ugawa, H. Iwasaki, and T. Yuasa. Improvements of recovery from marking stack overflow in mark sweep garbage collection. IPSJ Online Transactions, 5, 2012.Google ScholarGoogle Scholar
  29. A. Wick and M. Flatt. Memory accounting without partitions. In ISMM, pages 120–130. ACM, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. X. Yang, S. M. Blackburn, D. Frampton, J. B. Sartor, and K. S. McKinley. Why nothing matters: the impact of zeroing. In OOPSLA, volume 46, pages 307–324. ACM, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Data structure aware garbage collector

      Recommendations

      Comments

      Login options

      Check if you have access through your login credentials or your institution to get full access on this article.

      Sign in

      Full Access

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader
      About Cookies On This Site

      We use cookies to ensure that we give you the best experience on our website.

      Learn more

      Got it!