Recently, the importance of dynamic memory management has been increased significantly as there is a growing number of development in object-oriented programs. Many studies show that dynamic memory management is one of the most expensive components in many software systems. It can consume up to 30% of the program execution time. Especially, in C++ programs, it tends to have object creation and deletion prolifically. These objects tend to have short life-spans. This paper describes an integrated study of the C++'s memory allocation behavior, a memory tracing tool and memory managements based on the empirical study of C++ programs. First, this paper summarizes the hypothesis of situations that invoke the dynamic memory management explicitly and implicitly. They are: constructors, copy constructors, overloading assignment operator=, type conversions and application specific member functions. Second, a dynamic memory tracing tool, called mtrace++, is introduced to study the dynamic memory allocation behavior in C++ programs. Third, a dynamic memory allocation strategy, called O-Reuse, to reuse the allocated objects to speed up the object management. At the later part of this paper, an automatic dynamic memory management, called GC++, is discussed. GC++ collects unreferenced objects automatically with high speed of allocation/deallocation processes. The performance gains of O-Reuse and GC++ are come from the utilization of memory allocation/deallocation behavior.
[1]
Trevor N. Mudge,et al.
IDtrace/spl minus/a tracing tool for i486 simulation
,
1994,
Proceedings of International Workshop on Modeling, Analysis and Simulation of Computer and Telecommunication Systems.
[2]
Dirk Grunwald,et al.
Quantifying Behavioral Differences Between C and C++ Programs
,
1994
.
[3]
Paul R. Wilson,et al.
Dynamic Storage Allocation: A Survey and Critical Review
,
1995,
IWMM.
[4]
Susan L. Graham,et al.
Gprof: A call graph execution profiler
,
1982,
SIGPLAN '82.
[5]
W. T. Comfort.
Multiword list items
,
1964,
CACM.
[6]
James Coplien,et al.
Advanced C++ Programming Styles and Idioms
,
1991,
Proceedings. Technology of Object-Oriented Languages and Systems, TOOLS 25 (Cat. No.97TB100239).
[7]
Benjamin G. Zorn,et al.
Memory allocation costs in large C and C++ programs
,
1994,
Softw. Pract. Exp..
[8]
Bjarne Stroustrup,et al.
C++ Programming Language
,
1986,
IEEE Softw..
[9]
Wei Li,et al.
Another metric suite for object-oriented programming
,
1998,
J. Syst. Softw..
[10]
Ben Zorn,et al.
A memory allocation profiler for c and lisp
,
1988
.
[11]
Dirk Grunwald,et al.
Empirical measurements of six allocation-intensive C programs
,
1992,
SIGP.