Topic: object-oriented objects
Topic: memory management by buddy system
Topic: memory management by free list
Topic: memory management by garbage collection
Topic: memory management by reference counting
| |
Summary
Program data may be lexically scoped or dynamically scoped. Dynamically scoped data is allocated on the heap while lexically scoped data is allocated on the stack or assigned a fixed address. Object-oriented programming produces many objects on the heap. Heaps may be divided into pools by size, process identity, or lifespan.
When no longer in use, heap data may be explicitly freed, reference counted, or garbage collected. garbage collected. (cbb 12/07)
Subtopic: secure heap
Quote: comprehensive protection of the heap with minimal assumptions and low overhead; separates heap data and meta-data; layout obfuscation, random padding between objects, random recycling [»kharM10_2006]
| Subtopic: object heap
Quote: segmentation works poorly for Smalltalk because of object sizes from 25 bytes to 128K bytes and 32-64K objects [»ungarD5_1984, OK]
| Quote: Oberon's workspace consists of a stack of procedure activations and a heap of dynamically allocated variables
| Subtopic: pool memory
Quote: hardware-based extensions need pooled memory allocation [»chiuTC3_1999]
| Quote: Euclid allocates storage from collections with optional reference counting for automatic deallocation; may specify storage management module [»shawM3_1980]
| Quote: avoid memory errors by partitioning memory into pools according to the points-to graph; allows aggressive interprocedural pointer analysis; only 10% overhead due to static checking [»dhurD6_2006]
| Quote: unlink the slab instead of unlinking each buffer; freed slabs may be returned to the system; keeps a 15-second working set of recently-used slabs [»bonwJ6_1994]
| Subtopic: owned objects
Quote: most objects belong to other objects; memory management of these objects does not effect program complexity [»stroB_1987]
| Subtopic: large objects
Quote: use 2 KB arraylets instead of large memory objects; efficient access and garbage collection; 8 MB max size using an allocation page as the index [»bacoDF1_2003]
| Subtopic: manual memory management
Quote: Modula-3 provides unsafe, untraced reference types with an explicit dispose [»nelsG_1991]
| Quote: orthodox canonical form provides default constructor/destructor, copy constructor, and assignment; allows reliable copy and delete of heap memory [»simoAJ10_1998]
| Quote: manual memory management leads to global bookkeeping, slow memory leaks, dangling pointers, and fixed array sizes [»wilsPR9_1992]
| Subtopic: heap server
Quote: efficient heap management via a separate process; bulk deallocate, pre-allocation of multiple objects [»kharM10_2006]
| Subtopic: multi-processing memory management
Quote: Hoard memory allocator for parallel C and C++ programs; one global heap and per-processor heaps with low synchronization costs; up to 18x better [»bergED11_2000]
| Quote: LKmalloc -- memory allocator for servers with a subheap per thread; scales well [»larsPA10_1998]
| Quote: efficient spin lock for each free list; keeps lock in cache [»larsPA10_1998]
| Quote: cache sloshing -- multiple processors read and modify same cache line; avoid with independent subheaps [»larsPA10_1998]
| Subtopic: benchmarks
Quote: compared memory allocators with real and synthetic traces; poor correlation except for the best allocators [»wilsPR9_1995]
| Quote: memory allocation took 16% of runtime on average (40% max); eight applications with custom memory allocators [»bergED11_2002]
| Subtopic: memory statistics
Quote: memory management statistics needed to improve algorithms and memory management strategies [»riplGD3_1978]
| Subtopic: cache-conscious allocator
Quote: 27% speedup by cache-conscious heap allocator; additional parameter for contemporous data element [»chilTM12_2000]
| Quote: for cache utilization and bus balance, each slab allocates buffers at slightly different offsets [»bonwJ6_1994]
| Subtopic: fragmentation, compressor
Quote: external fragmentation occurs when free memory is split into two or more fragments; can measure fragmentation by number of separate fragments [»beckLL10_1982]
| Quote: use Treadmill variant to reduce memory fragmentation; reassigns pages between free lists, header compaction, experiments [»limTF3_1999]
| Quote: concurrent, incremental memory compressor with short pauses and one heap pass; requires 3x storage [»kermH6_2006]
| Quote: memory compressor assumes all objects are moved, using page protection to trap unmoved objects; copies pages when used [»kermH6_2006]
| Subtopic: debugging
Quote: HeapMD detects anomalies in stable, degree-based metrics of the heap; found 31 new bugs in large, commercial applications; 2-3x slowdown; few false-positives; call-stack log [»chilTM10_2006]
| Quote: Exterminator automatically corrects heap-based memory errors detected by a probablisitic debugging allocator (DieFast); diffs heap images to identify overlows and dangling pointers; fixed by padding objects and deferring allocation [»novaG6_2007]
| Quote: the slab allocator assists debugging with auditing, verfication, redzone checking, page-per-buffer mode, and leak detection [»bonwJ6_1994]
| Quote: in audit mode, the slab allocator records activity in a circular log; identifies owners of corrupted blocks [»bonwJ6_1994]
| Subtopic: problems with memory management
Quote: for safety-critical code, do not use dynamic memory allocation after initialization
| Quote: memory management changes runtimes dramatically but users have little control [»kernBW7_1998]
| Quote: reference counting is expensive, especially with cache memory [»blacSM6_2004]
|
Related Topics
Topic: object-oriented objects (39 items)
Topic: memory management by buddy system (9 items)
Topic: memory management by free list (25 items)
Topic: memory management by garbage collection (116 items)
Topic: memory management by reference counting (23 items)
|