Topic: heap memory management
Topic: memory management by age
Topic: memory management by buddy system
Topic: memory management by free list
Topic: memory management by garbage collection
Topic: memory management by paging
Topic: memory management by reference counting
Topic: memory management by regions or memory pool
Topic: memory management by working sets
Topic: memory management for programs and modules
Topic: virtual memory
Group: computer hardware
Group: programming
Topic: compiler
Topic: data caching
Topic: database implementation
Topic: dangling pointers
Topic: disk allocation
Topic: efficiency
Topic: file cache
Topic: managing shared memory
Topic: memory cache
Topic: object code linkers and loaders
Topic: operating system kernel
Topic: owned resources and data objects
Topic: Thesa compiler and loader
Topic: register allocation by usage counts
Topic: security by access rights
Topic: running programs in a workspace or environment
Topic: safe use of pointers
| |
Summary
Typically blocks of memory are allocated in various sizes, which may be predefined. One scheme with interesting properties is based on powers-of-two sizing, another is based on block multiples. Since memory is used for many purposes a mixed memory manager is often appropriate. For instance some structures should be allowed to grow without bound while others such as a stack should have known limits. The first indicates a pool of available memory while the later indicates a pre-defined size. Other examples are guaranteed memory for one message on each information queue, and small scale memory for frequently used requests with large-scale memory reserved for infrequent requests. Dynamically allocated memory is referenced by pointer variables. Multiple pointers may exist to the same allocated object, which makes storage release difficult. One solution, called garbage collection, is to follow all reference chains, mark used blocks, and then sweep memory of unmarked blocks. Another common technique is to maintain use counts and release storage with zero counts. The amount of memory available is usually accessible by the user. (cbb 5/80)
Subtopic: memory
Quote: system designers and programmers need to understand program memory management; vast difference in performance [»hoarCA_1971]
| Quote: five orders of magnitude performance difference between main store and backing store
| Quote: memory is a wire turned sideways in time
| Quote: memory is a characteristic feature of computers; the act of inserting an item erases whatever was there before [»straC8_1967]
| Quote: a location or L-value is an area of the store that has a content or R-value; change the R-value with an updating operation [»straC8_1967]
| Subtopic: multi-process management
Quote: implemented lock-free malloc (LFMalloc) with MP-RCS; one heap per CPU, low latency, scalable, memory and cache efficient
| Quote: Java memory model for multithreaded programs; guarantees sequential consistency of data-race-free programs; bounds the behavior of incorrectly synchronized programs by a notion of causality [»mansJ1_2005]
| Subtopic: security
Quote: most systems for untrusted extensions assume a trusted garbage collector; use Capability Language to verify memory management [»walkD7_2000]
| Quote: Capability Language (CL) propagates capabilities for region-based memory operations; provably safe type system; lexical scope not required; e.g., extensible systems and continuation-passing style [»walkD7_2000]
| Quote: use region-based memory allocation for secure systems; smaller trusted computing base, avoids garbage collection pauses, region profiling, safe memory operations without leaks [»walkD7_2000]
| Quote: track non-aliasing of memory regions via tagged capabilities and type system [»walkD7_2000]
| Subtopic: memory placement
Quote: 'new' needs memory placement arguments for hardware-specific addresses, custom memory allocation, and general resource management [»stroB_1994]
| Quote: with memory placement arguments, 'new' can assist with general resource management
| Subtopic: copy-on-update, copy-on-write, steal
Quote: instead of smart pointers or handles, use copy-on-update for heap structures; duplicate those parts that are changed [»simoAJ10_1998]
| Quote: instead of copy-on-write, allow low-level objects to steal heap structures from temporary variables [»simoAJ10_1998]
| Subtopic: slab memory management
Quote: the SunOS slab memory allocator retains the state of complex objects between uses; object-coloring for global cache utilization; space efficient and fast [»bonwJ6_1994]
| Quote: the slab allocator manages policy and memory while clients manage the object's name, size, alignment, and constructors [»bonwJ6_1994]
| Quote: the slab allocator has independent caches with per-cache locking, statistics, and no shared state [»bonwJ6_1994]
| Quote: the slab allocator allocates non-cached objects from 30 slabs of 8 bytes to 9K; larger requests allocated by the back-end page supplier [»bonwJ6_1994]
| Quote: a slab is one or more pages of contiguous memory divided into equal size chunks; reference count of allocated chucks [»bonwJ6_1994]
| Subtopic: heap metadata
Quote: two bits of meta-data per heap data; delimiter bit and value bit gives size, free and allocated [»kharM10_2006]
| Quote: store metadata for library data structures in a parallel data structure; e.g., another linked list to mirror a linked list [»necuGC5_2005]
| Subtopic: stack allocation
Quote: use escape analysis to identify object lifetimes; e.g., for stack allocation [»gayD3_2000]
| Subtopic: segment allocation
Quote: Multics avoids buffer overflow -- PL/I strings have a fixed maximum length; data can not be executed; virtual addresses are segmented; stacks grew up instead of down [»kargPA12_2002]
| Quote: efficient intra-address space protection by combining segmentation and paging hardware [»chiuTC3_1999]
| Quote: a capability is a pointer to a computing object and the actions that the computation may perform on that object; e.g., segment capabilities for reading, writing, and executing
| Subtopic: memory errors
Quote: for hardware failures, 30% memory, 26% disk, 17% processor; for driver failures, 35% display, 13% anti-virus, 10% CD-burning, 9% audio, 9% modem
| Subtopic: temperature and memory
Quote: purge semiconductor memory by heating it to 140 deg. C; retain for weeks by cooling to -60 deg. C [»gutmP7_1996]
| Subtopic: error-correcting memory
Quote: can write a Java or .NET program so that most memory errors break security of the virtual machine; defend with error-correcting memory [»goviS5_2003]
| Subtopic: pre-allocated vs dynamic allocation
QuoteRef: cbb_1973 ;;1/12/74 Information queuing want allocated storage, provide an endzone where only queue heads can go, means information is always there if it is available, basically gives two completely different modes of operation
| Subtopic: memory leak detection
Quote: use adaptive profiling to identify memory leaks in long running programs; sample code segments inversely to execution frequency; a leak is a stale object that is not accessed; SWAT has a low false positive rate [»chilTM10_2004]
| Quote: memory leak detector based on owning pointers; automatically inferred; a class member always or never owns its pointee at public method boundaries; found errors in binutils and apache [»heinDL6_2003]
| Quote: for leaked objects, SWAT reports last observed access, allocation site, and deallocation sites; sort by number of leaked objects and largest drag [»chilTM10_2004]
| Quote: SWAT identified all 34 injected memory leaks (and a real leak) in a large interactive web application; identified 6 leaks in beta code [»chilTM10_2004]
| Quote: memory leak detection for garbage-collectors using differences between volumes of type points-from graph; no false positives, space and time efficient [»jumpM1_2007]
| 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]
| Subtopic: memory conditionals
QuoteRef: sammJE_1969 ;;432 Storage by tests on memory eg, >*n continue routing if storage greater than numeric subscript of constitute n
| Subtopic: custom vs. generic memory allocator
Quote: the Lea memory allocator works as well as custom allocators in six of eight applications; only region allocators do better [»bergED11_2002]
| Subtopic: cost of memory management
Quote: writing an ASDL pickle is dominated by I/O while reading by memory allocation time
| Quote: memory management changes runtimes dramatically but users have little control [»kernBW7_1998]
| Quote: Java's runtime efficiency is acceptable but it has a huge memory overhead [»precL10_2000]
|
Group: memory management
Topic: heap memory management (33 items)
Topic: memory management by age (18 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 paging (23 items)
Topic: memory management by reference counting (23 items)
Topic: memory management by regions or memory pool (17 items)
Topic: memory management by working sets (18 items)
Topic: memory management for programs and modules (12 items)
Topic: virtual memory (32 items)
Related Topics
Group: computer hardware (24 topics, 343 quotes)
Group: programming (339 topics, 10149 quotes)
Topic: compiler (18 items)
Topic: data caching (35 items)
Topic: database implementation (18 items)
Topic: dangling pointers (13 items)
Topic: disk allocation (32 items)
Topic: efficiency (96 items)
Topic: file cache (23 items)
Topic: managing shared memory (74 items)
Topic: memory cache (29 items)
Topic: object code linkers and loaders (31 items)
Topic: operating system kernel (67 items)
Topic: owned resources and data objects (12 items)
Topic: Thesa compiler and loader (23 items)
Topic: register allocation by usage counts (12 items)
Topic: security by access rights (38 items)
Topic: running programs in a workspace or environment (14 items)
Topic: safe use of pointers (102 items)
|