Abstract
Automatic garbage collection relieves programmers from the burden of managing memory themselves and several techniques have been developed that make garbage collection feasible in many situations, including real time applications or within traditional programming languages. However optimal performance cannot always be achieved by a uniform general purpose solution. Sometimes an algorithm exhibits a predictable pattern of memory usage that could be better handled specifically, delaying as much as possible the intervention of the general purpose collector. This leads to the requirement for algorithm specific customisation of the collector strategies. We present a dynamic memory management framework which can be customised to the needs of an algorithm, while preserving the convenience of automatic collection in the normal case. The Customisable Memory Management (CMM) organizes memory in multiple heaps. Each heap is defined as a C++ class which encapsulates a particular storage discipline. The default heap for collectable objects uses the technique of mostly copying garbage collection, providing good performance and memory compaction. Customisation of the collector is achieved exploiting object orientation by defining specialised versions of the collector methods for each heap class. The object oriented interface to the collector enables coexistence and coordination among the various collector as well as integration with traditional code unaware of garbage collection. The CMM is implemented in C++ without any special support in the language or the compiler. The techniques used in the CMM are general enough to be applicable also to other languages.
The research described here has been funded in part by the ESPRIT Basic Research Action, project PoSSo.
Part of this work has been done while the first author was visiting the International Computer Science Institute, Berkeley, California.
This is a preview of subscription content, log in via an institution.
Preview
Unable to display preview. Download preview PDF.
References
J.D. Ichbiah et al. “Rationale for the design of the ADA programming language”, ACM SIGPLAN Notices, 14(6), 1979.
G. Attardi and T. Flagella “A customisable memory management framekwork”, Proceedings of USENIX C++ Conference 1994, Cambridge, Massachusetts, April 1994.
J.F. Bartlett “Compacting garbage collection with ambiguous roots” Tech. Rep. 88/2, DEC Western Research Laboratory, Palo Alto, California, February 1988.
J.F. Bartlett “Mostly-copying collection picks up generations and C++”, Tech. Rep. TN-12, DEC Western Research Laboratory, Palo Alto, California, October 1989.
H.J. Boehm and M. Weiser “Garbage collection in an uncooperative environment”, Software Practice and Experience, 18(9), 1988, 807–820.
B. Buchberger, “Gröbner bases: an algorithmic method in polynomial ideal theory”, Recent trends in multidimensional systems theory, N. K. Bose, ed., D. Reidel Publ. Comp. 1985, 184–232.
D. L. Detlefs, “Concurrent garbage collection for C++”, CMU-CS-90-119, School of Computer Science, Carnegie Mellon University, 1990.
D.R. Edelson “Precompiling C++ for garbage collection”, in Memory Management, Y. Bekkers and J. Cohen (Eds.), Lecture Notes in Computer Science, n. 637, Springer-Verlag, 1992, 299–314.
D.R. Edelson “A mark-and-sweep collector for C++”, Proc. of ACM Conference on Principle of Programming Languages, 1992.
J.R. Ellis and D.L. Detlefs “Safe, efficient garbage collection for C++”, Xerox PARC report CSL-93-4, 1993.
G. Nelson, editor “Systems Programming with Modula3”, Prentice Hall, 1991.
F. Rouillier “Personal communication”, 1994.
A.D. Samples “GC-cooperative C++”, Lecture Notes in Computer Science, n. 637, Springer-Verlag, 1992, 315–329.
D. Weinreb, D. Moon and R.M. Stallman “Lisp Machine Manual” Massachusetts Institute of Technology, Cambridge, Massachusetts, 1983.
E. P. Wentworth “Pitfalls of conservative garbage collection”, Software Practice and Experience, 20(7), 1990, 719–727.
P.R. Wilson “Uniprocessor garbage collection techniques”, in Memory Management, Y. Bekkers and J. Cohen (Eds.), Lecture Notes in Computer Science, n. 637, Springer-Verlag, 1992, 1–42.
B. Zorn “The measured cost of conservative garbage collection” Technical Report CU-CS-573-92, Department of Computer Science, University of Colorado at Boulder, 1992.
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 1994 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Attardi, G., Flagella, T. (1994). Customising object allocation. In: Tokoro, M., Pareschi, R. (eds) Object-Oriented Programming. ECOOP 1994. Lecture Notes in Computer Science, vol 821. Springer, Berlin, Heidelberg. https://doi.org/10.1007/BFb0052190
Download citation
DOI: https://doi.org/10.1007/BFb0052190
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-58202-1
Online ISBN: 978-3-540-48567-4
eBook Packages: Springer Book Archive