A study of high-performance dynamic memory management in object-oriented programming
J. Morris Chang, Woo Hyong Lee
Abstract
J. Morris Chang, Woo Hyong Lee
Abstract
The importance of dynamic memory management has increased significantly as there is a growing number of developments in object-oriented programs. Many studies show that dynamic memory management is one of the most expensive components of many software systems. It can consume up to 30% of the program execution time. Object-Oriented Programming (OOP) language systems tend to perform object creation and deletion prolifically. An empirical study has shown that C++ programs can have ten times more memory allocation and deallocation than comparable C programs. However, the allocation behavior of C++ programs is rarely reported. In this study, we attempted to locate where the dynamic memory allocations are coming from and report an empirical study of the allocation behavior of C++ programs. To do the experiment, we introduce a dynamic memory tracing tool, called Mtrace++, to study the memory allocation behavior in C++. Mtrace++ is a source code level instrumented tracing tool that produces records of allocation and deallocation information. Using Mtrace++, the C++ allocation patterns are studied thoroughly. After we identify the allocation behavior, we discuss a new high-performance memory management strategies, which were developed based on our empirical investigations. The goals for the strategies are fast allocation, fast deallocation, maximizing portability and space conservation.
A significance statement is not available in the OpenAlex record.
A contribution statement is not available in the OpenAlex record.
Method details are not available in the OpenAlex metadata.
Findings are not separately available in the OpenAlex metadata.
Limitations are not available in the OpenAlex metadata.
Application details are not available in the OpenAlex metadata.
The importance of dynamic memory management has increased significantly as there is a growing number of developments in object-oriented programs. Many studies show that dynamic memory management is one of the most expensive components of many software systems. It can consume up to 30% of the program execution time. Object-Oriented Programming (OOP) language systems tend to perform object creation and deletion prolifically. An empirical study has shown that C++ programs can have ten times more memory allocation and deallocation than comparable C programs. However, the allocation behavior of C++ programs is rarely reported. In this study, we attempted to locate where the dynamic memory allocations are coming from and report an empirical study of the allocation behavior of C++ programs. To do the experiment, we introduce a dynamic memory tracing tool, called Mtrace++, to study the memory allocation behavior in C++. Mtrace++ is a source code level instrumented tracing tool that produces records of allocation and deallocation information. Using Mtrace++, the C++ allocation patterns are studied thoroughly. After we identify the allocation behavior, we discuss a new high-performance memory management strategies, which were developed based on our empirical investigations. The goals for the strategies are fast allocation, fast deallocation, maximizing portability and space conservation.
Key concepts: Computer science, C dynamic memory allocation, Allocator, Memory management, Tracing, Software portability, Distributed computing, Programming language