Skip to main content

Compiler-Cooperative Memory Management in Java

  • Conference paper
  • First Online:
Book cover Perspectives of System Informatics (PSI 2001)

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 2244))

  • 368 Accesses

Abstract

Dynamic memory management is a known performance bottleneck of Java applications. The problem arises out of the Java memory model in which all objects (non-primitive type instances) are allocated on the heap and reclaimed by garbage collector when they are no longer needed. This paper presents a simple and fast algorithm for inference of object lifetimes. Given the analysis results, a Java compiler is able to generate faster code, reducing the performance overhead. Besides, the obtained information may be then used by garbage collector to perform more effiective resource clean-up. Thus, we consider this technique as “compile-time garbage collection” in Java.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. J. Gosling, B. Joy and G. Steele: The Java Language Specification. Addison-Wesley, Reading, 1996

    MATH  Google Scholar 

  2. Gu et al.: The Evolution of a High-Performing JVM. IBM Systems Journal, Vol. 39, No. 1, 2000

    Google Scholar 

  3. D. Detlefs, T. Printezis: A Generational Mostly-Concurrent Garbage Collector. In Proc. ACM ISMM’00, 2000

    Google Scholar 

  4. V.V. Mikheev: Design of Multilingual Retargetable Compilers: Experience of the XDS Framework Evolution In Proc. Joint Modular Languages Conference, JMLC’2000, Volume 1897 of LNCS, Springer-Verlag, 2000

    Google Scholar 

  5. J.T. Shwartz: Optimization of very high-level languages-I. Value transmission and its coloraries. Computer Languages, 1(2), 1975

    Google Scholar 

  6. D. Gay, B. Steensgaard: Stack Allocating Objects in Java. Reasearch Report, Microsoft Research, 1999

    Google Scholar 

  7. J.-D. Choi et al.: Escape Analysis for Java. SIGPLAN Notices, Volume 34, Number 10, 1999

    Google Scholar 

  8. B. Blanchet: Escape Analysis for Object Oriented Languages. Application to Java(tm). SIGPLAN Notices, Volume 34, Number 10, 1999

    Google Scholar 

  9. D. Chase, M. Wegman, and F. Zadeck: Analysis of pointers and structures. SIGPLAN Notices, Volume 25, Number 6, 1990

    Google Scholar 

  10. D. Bacon: Fast and Effiective Optimization of Statically Typed Object-Oriented Languages. Technical Report, University of California, 1997

    Google Scholar 

  11. D. Bacon, P. Sweeney: Fast static analysis of C++ virtual calls. In Proc. OOPSLA’ 96, SIGPLAN Notices, Volume 31, Number 10, 1996

    Google Scholar 

  12. O. Agesen: The Cartesian Product Algorithm: Simple and Precise Type Inference of Parametric Polymorphism. In Proc. ECOOP’95, Aarhus, Denmark, 1995

    Google Scholar 

  13. A. Deutch: On the complexity of escape analysis. In Conference Record of POPL’97, The 24th ACM SIGPLAN-SIGAST, 1997

    Google Scholar 

  14. S. Hughes: Compile-time garbage collection for higher-order functional languages. Journal of Logic and Computation, 2(4), 1992

    Google Scholar 

  15. K. Inoue et al.: Analysis of functional programs to detect run-time garbage cells. ACM Transactions on Programming Languages and Systems, 10(4), 1988

    Google Scholar 

  16. Y. Park, B. Goldberg: Escape analysis on lists In Proceedings of PLDI’92, ACM SIGPLAN, 1992

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2001 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Mikheev, V.V., Fedoseev, S.A. (2001). Compiler-Cooperative Memory Management in Java. In: Bjørner, D., Broy, M., Zamulin, A.V. (eds) Perspectives of System Informatics. PSI 2001. Lecture Notes in Computer Science, vol 2244. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-45575-2_49

Download citation

  • DOI: https://doi.org/10.1007/3-540-45575-2_49

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-43075-9

  • Online ISBN: 978-3-540-45575-2

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics