Unify is a library and run-time package that provides a distributed shared memory abstraction for multiple processes. Unify lets programmers to write distributed applications that cross machine boundaries. Unify programs share memory in chunks called segments. Programs call "get" to update get the latest copy of a segment or "put" to send a copy of the segment to interested processes. Event counts and synchronizers are used for synchronization.
Hoard is a fast, scalable and memory-efficient allocator for
multithreaded applications on multiprocessors. Hoard solves the heap
contention problem caused when multiple threads simultaneously call
malloc()
and free()
(or new
and
delete
).
FIFO handling of memory cache can result in the unexpected effect of performance actually declining when the amount of memory increases. Windows NT reportedly (but unverifiably) suffers from this problem.
YAMD - Yet Another Malloc Debugger
It's a package for finding dynamic allocation related bugs in C and C++ .
pmap analyzes memory usage of processes on Linux
This may be used to determine what's going on with X memory usage thus: pmap `pidof X`
The result, on my system, was that X was mapping a total of 231MB, but of that, 169MB was being shared with other things (e.g. - shared libraries, the RAM on the graphics card, and so forth) such that the actual consumption associated with X itself was around 55MB, which is not particularly outrageous.
Managing memory "by hand" tends to be tedious and error-prone.
Memory management tends to be strongly tied to language environments, which vary in the degree to which they permit automation of this process.
Highly dynamic languages like Lisp, Prolog, and various functional languages promote the use of GC; imperative compiled languages such as C, C++, and FORTRAN do not encourage its use nearly so much.
The FluxOS Toolkit tries to provide OS components to allow the OS environment to expose rich interfaces for memory management to the language implementation, which apparently makes it easier to experiment with exotic memory management techniques.
There are, nonetheless, some tools and libraries designed to provide common garbage collection tools for programmsers working in various languages including C.
Garbage Collection : Algorithms for Automatic Dynamic memory Management
Boehm-Demers-Weiser conservative garbage collector for C and C++
Type Preserving Garbage Collectors
Describes a GC implemented in ML .
qish - generational copying garbage collector for C/C++