Topic: heap memory management

topics > computer science > operating system > Group: memory management

object-oriented objects
memory management by buddy system
memory management by free list
memory management by garbage collection
memory management by reference counting


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 up

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 up

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 up

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 up

Quote: most objects belong to other objects; memory management of these objects does not effect program complexity [»stroB_1987]

Subtopic: large objects up

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 up

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 up

Quote: efficient heap management via a separate process; bulk deallocate, pre-allocation of multiple objects [»kharM10_2006]

Subtopic: multi-processing memory management up

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 up

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 up

Quote: memory management statistics needed to improve algorithms and memory management strategies [»riplGD3_1978]

Subtopic: cache-conscious allocator up

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 up

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 up

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 up

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

Related Topics up

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)

Updated barberCB 8/05
Copyright © 2002-2008 by C. Bradford Barber. All rights reserved.
Thesa is a trademark of C. Bradford Barber.