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.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
J. Gosling, B. Joy and G. Steele: The Java Language Specification. Addison-Wesley, Reading, 1996
Gu et al.: The Evolution of a High-Performing JVM. IBM Systems Journal, Vol. 39, No. 1, 2000
D. Detlefs, T. Printezis: A Generational Mostly-Concurrent Garbage Collector. In Proc. ACM ISMM’00, 2000
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
J.T. Shwartz: Optimization of very high-level languages-I. Value transmission and its coloraries. Computer Languages, 1(2), 1975
D. Gay, B. Steensgaard: Stack Allocating Objects in Java. Reasearch Report, Microsoft Research, 1999
J.-D. Choi et al.: Escape Analysis for Java. SIGPLAN Notices, Volume 34, Number 10, 1999
B. Blanchet: Escape Analysis for Object Oriented Languages. Application to Java(tm). SIGPLAN Notices, Volume 34, Number 10, 1999
D. Chase, M. Wegman, and F. Zadeck: Analysis of pointers and structures. SIGPLAN Notices, Volume 25, Number 6, 1990
D. Bacon: Fast and Effiective Optimization of Statically Typed Object-Oriented Languages. Technical Report, University of California, 1997
D. Bacon, P. Sweeney: Fast static analysis of C++ virtual calls. In Proc. OOPSLA’ 96, SIGPLAN Notices, Volume 31, Number 10, 1996
O. Agesen: The Cartesian Product Algorithm: Simple and Precise Type Inference of Parametric Polymorphism. In Proc. ECOOP’95, Aarhus, Denmark, 1995
A. Deutch: On the complexity of escape analysis. In Conference Record of POPL’97, The 24th ACM SIGPLAN-SIGAST, 1997
S. Hughes: Compile-time garbage collection for higher-order functional languages. Journal of Logic and Computation, 2(4), 1992
K. Inoue et al.: Analysis of functional programs to detect run-time garbage cells. ACM Transactions on Programming Languages and Systems, 10(4), 1988
Y. Park, B. Goldberg: Escape analysis on lists In Proceedings of PLDI’92, ACM SIGPLAN, 1992
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights 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