A customisable memory management framework for C++

被引:0
|
作者
Attardi, G [1 ]
Flagella, T [1 ]
Iglio, P [1 ]
机构
[1] Univ Pisa, Dipartimento Informat, I-56125 Pisa, Italy
来源
SOFTWARE-PRACTICE & EXPERIENCE | 1998年 / 28卷 / 11期
关键词
memory management; garbage collection; C++;
D O I
10.1002/(SICI)1097-024X(199809)28:11<1143::AID-SPE194>3.0.CO;2-7
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
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 Manager (CMM) organises memory in multiple heaps. Each heap is an instance of C++ class which abstracts and 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 collectors 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 performance of the CMM is analysed and compared to other conservative collectors for C/C++ in various configurations. (C) 1998 John Wiley & Sons, Ltd.
引用
收藏
页码:1143 / 1183
页数:41
相关论文
共 50 条
  • [21] Bypassing Memory Leak in Modern C++ Realm
    Papp, Dorottya
    Pataki, Norbert
    ANNALES MATHEMATICAE ET INFORMATICAE, 2018, 48 : 43 - 50
  • [22] SHARED-MEMORY PARALLEL PROGRAMMING IN C++
    BECK, B
    IEEE SOFTWARE, 1990, 7 (04) : 38 - 48
  • [23] A C++ framework for geometric semantic genetic programming
    Mauro Castelli
    Sara Silva
    Leonardo Vanneschi
    Genetic Programming and Evolvable Machines, 2015, 16 : 73 - 81
  • [24] A framework for dynamic checks of C arrays via a C++ class
    Macphee, KE
    Dix, TI
    1998 AUSTRALIAN SOFTWARE ENGINEERING CONFERENCE, PROCEEDINGS, 1998, : 57 - 65
  • [25] An automated C++ code and data partitioning framework for data management of data-intensive applications
    Milidonis, A
    Dimitroulakos, G
    Galanis, MD
    Theodoridis, G
    Goutis, C
    Catthoor, F
    SOFTWARE AND COMPILERS FOR EMBEDDED SYSTEMS, PROCEEDINGS, 2004, 3199 : 122 - 136
  • [26] C++ multimedia trilogy: rescued by C++, success with C++, and 1001 C/C++, tips
    Wiatrowski, Claude A.
    Journal of Object-Oriented Programming, 1995, 8 (03):
  • [27] LOCAL++: A C++ framework for local search algorithms
    Schaerf, A
    Cadoli, M
    Lenzerini, M
    SOFTWARE-PRACTICE & EXPERIENCE, 2000, 30 (03): : 233 - 257
  • [28] LOCAL++: A C++ framework for local search algorithms
    Schaerf, Andrea
    Lenzerini, Maurizio
    Cadoli, Marco
    Proceedings of the Conference on Technology of Object-Oriented Languages and Systems, TOOLS, 1999, : 152 - 161
  • [29] SD '95 east, ANSI C++, framework wars
    Stevens, A
    DR DOBBS JOURNAL, 1996, 21 (01): : 118 - 121
  • [30] DAQ++:: A C++ data acquisition software framework
    Lacasta, C.
    Cochran, E.
    Honscheid, K.
    Llosa, G.
    Studen, A.
    2007 15TH IEEE-NPSS REAL-TIME CONFERENCE, VOLS 1 AND 2, 2007, : 314 - +