Memory allocation costs in large C and C++ programs

@article{Detlefs1994MemoryAC,
  title={Memory allocation costs in large C and C++ programs},
  author={David Detlefs and Al Dosser and Benjamin G. Zorn},
  journal={Software: Practice and Experience},
  year={1994},
  volume={24}
}
Dynamic storage allocation is an important part of a large class of computer programs written in C and C + +. High‐performance algorithms for dynamic storage allocation have been, and will continue to be, of considerable interest. This paper presents detailed measurements of the cost of dynamic storage allocation in 11 diverse C and C + + programs using five very different dynamic storage allocation implementations, including a conservative garbage collection algorithm. Four of the allocator… Expand
Evaluation of a high-performance object reuse dynamic memory allocation policy for C++ programs
  • Woo Hyong Lee, J. Chang, Y. Hasan
  • Computer Science
  • Proceedings Fourth International Conference/Exhibition on High Performance Computing in the Asia-Pacific Region
  • 2000
TLDR
This paper presents a dynamic memory allocation strategy to reuse these objects to speed up the object management and shows that allocation speed is increased up to four times compared to other well-known algorithms. Expand
A dynamic memory measuring tool for C++ programs
  • Woo Hyong Lee, J. Chang, Y. Hasan
  • Computer Science
  • Proceedings 3rd IEEE Symposium on Application-Specific Systems and Software Engineering Technology
  • 2000
Dynamic memory management has been a high cost component in many software systems. A study has shown that memory intensive C programs can consume up to 30% of the program run time in memoryExpand
A garbage collection policy based on empirical behavior
TLDR
This paper presents a garbage collection strategy, called GC++, which collects garbage automatically with high speed of object allocation/deallocation, which is purely source-code oriented and built on the top of the normal C++ memory manager. Expand
An integrated dynamic memory tracing tool for C++
TLDR
A tracing tool, called mtrace++, to study the dynamic memory allocation behavior in C++ programs and provides extended functionalities which include measuring life-spans and detecting memory leaks. Expand
A study of dynamic memory management in C++ programs
TLDR
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, and an automatic dynamic memory management, called GC++, is discussed. Expand
A high-performance memory allocator for memory intensive applications
  • J. Chang, Y. Hasan, W. Lee
  • Computer Science
  • Proceedings Fourth International Conference/Exhibition on High Performance Computing in the Asia-Pacific Region
  • 2000
TLDR
The empirical study shows that the maximum number of live objects of each size is independent of the input; this data provides a profile and estimate for the amount of memory the application will need to run and can give great improvement in performance. Expand
Segregating heap objects by reference behavior and lifetime
TLDR
This paper investigates efforts to predict heap object reference and lifetime behavior at the time objects are allocated, and uses profile-based optimization and considers a variety of different information sources present at theTime of object allocation to predict the object's reference frequency and lifetime. Expand
An algorithm with constant execution time for dynamic storage allocation
  • Takeshi Ogasawara
  • Computer Science
  • Proceedings Second International Workshop on Real-Time Computing Systems and Applications
  • 1995
TLDR
A new algorithm called Half-Fit whose WCET can be calculated accurately is proposed, which finds a free block without searching on a free list or tree, allowing extra unusable memory called incomplete memory use. Expand
A method for automatic optimization of dynamic memory management in C++
TLDR
A pre-processor based method, named Amplify, which is a completely automated procedure optimizes (object-oriented) C++ applications to exploit the temporal locality in dynamic memory usage and can obtain significant speed-up for synthetic applications. Expand
An Efficient Memory System for Java
TLDR
A hardware/software approach in handling memory allocation and deallocation requests that gives a 17% overall performance gain in Java program execution is proposed. Expand
...
1
2
3
4
5
...

References

SHOWING 1-10 OF 32 REFERENCES
The measured cost of conservative garbage collection
  • B. Zorn
  • Computer Science
  • Softw. Pract. Exp.
  • 1993
TLDR
It is found that programmer enhancements often have little effect on program performance and that the true cost of conservative garbage collection is not the CPU overhead, but the memory system overhead of the algorithm. Expand
Improving the cache locality of memory allocation
TLDR
It is shown how the design of a memory allocator can significantly affect the reference locality for various applications, and measurements suggest an allocator design that is both very fast and has good locality of reference. Expand
Evaluating models of memory allocation
TLDR
It is concluded that even relatively simple synthetic models can effectively emulate the allocation behavior of well-behaved programs and roughly approximate the behavior of more complex programs and/or allocation policies. Expand
Analysis of Free-Storage Algorithms - Revisited
TLDR
Simulations were done of established, and proposed, dynamic storage algorithms for the VM/SP operating system, and empirical evidence is given that simplifying statistical assumptions about the distribution of interarrival times and holding times has high predictive ability. Expand
Garbage collection in an uncooperative environment
TLDR
This approach greatly simplifies the implementation of languages supporting garbage collection and allows conventional compilers to be used with a garbage collector, either as the primary means of storage reclamation, or as a debugging tool. Expand
An efficient algorithm for heap storage allocation
TLDR
Replacing the original allocator with the one described below improved performance by nearly an order of magnitude. Expand
Customalloc: Efficient synthesized memory allocators
TLDR
The allocation and disposal of memory is a ubiquitous operation in most programs, but in some applications, programmers use domain‐specific knowledge in an attempt to improve the speed or memory utilization of memory allocators. Expand
Space efficient conservative garbage collection
TLDR
It is shown that some very inexpensive, but previously unused techniques can have dramatic impact on the effectiveness of conservative garbage collectors in reclaiming memory. Expand
Mostly parallel garbage collection
TLDR
A method for adapting garbage collectors designed to run sequentially with the client, so that they may run concurrently with it, has been used to construct a mostly parallel trace-and-sweep collector that exhibits very short pause times. Expand
Optimally profiling and tracing programs
TLDR
Algorithms for inserting monitoring code to profile and trace programs that greatly reduce the cost of measuring programs and reduce the file size and overhead of an already highly optimized tracing system are presented. Expand
...
1
2
3
4
...