Memory pool

An example of external fragmentation

Use of pools for memory management that allows dynamic memory allocation comparable to malloc or C++'s operator new.

- Memory pool

17 related topics

Relevance

Pool (computer science)

Collection of resources that are kept ready to use, rather than acquired on use and released afterwards.

Charles Babbage, sometimes referred to as the "father of computing".

Special cases of pools are connection pools, thread pools, and memory pools.

Hash table

Data structure that implements a set abstract data type, a structure that can map keys to values.

A small phone book as a hash table
Hash collision resolved by separate chaining
Hash collision by separate chaining with head records in the bucket array.
380px
This graph compares the average number of CPU cache misses required to look up elements in large hash tables (far exceeding size of the cache) with chaining and linear probing. Linear probing performs better due to better locality of reference, though as the table gets full, its performance degrades drastically.

The algorithm is ideally suited for fixed memory allocation.

Linked list

Linear collection of data elements whose order is not given by their physical placement in memory.

A singly linked list whose nodes contain two fields: an integer value and a link to the next node
A doubly linked list whose nodes contain three fields: an integer value, the link forward to the next node, and the link backward to the previous node
A circular linked list
Diagram of inserting a node into a singly linked list
Diagram of deleting a node from a singly linked list

It can also be slow, and with a naïve allocator, wasteful, to allocate memory separately for each new element, a problem generally solved using memory pools.

GLib

Bundle of three low-level system libraries written in C and developed mainly by GNOME.

Simplified software architecture of GTK. Pango, GDK, ATK, GIO, Cairo and GLib.

GLib implements functions that provide threads, thread programming and related facilities such as primitive variable access, mutexes, asynchronous queues, secure memory pools, message passing and logging, hook functions (callback registering) and timers.

Direct3D

Graphics application programming interface for Microsoft Windows.

Abstract Layer
Device
Direct3D 11 graphics pipeline process

Pool: Describes how the resource is managed by the runtime and where it is stored. In the Default pool the resource will exist only in device memory. Resources in the managed pool will be stored in system memory, and will be sent to the device when required. Resources in system memory pool will only exist in system memory. Finally, the scratch pool is basically the same as the system memory pool, but resources are not bound by hardware restrictions.

Apache Portable Runtime

Supporting library for the Apache web server.

Memory allocation and memory pool functionality

Fragmentation (computing)

Phenomenon in which storage space, main storage or secondary storage, is used inefficiently, reducing capacity or performance and often both.

1 GiB of SDRAM mounted in a computer. An example of primary storage.

For example, in dynamic memory allocation, memory pools drastically cut internal fragmentation by spreading the space overhead over a larger number of objects.

Pooling (resource management)

Grouping together of resources for the purposes of maximizing advantage or minimizing risk to the users.

A program in paper tape

Memory pooling

Free list

Data structure used in a scheme for dynamic memory allocation.

An example of external fragmentation

It is most suitable for allocating from a memory pool, where all objects have the same size.

Virtualization

Act of creating a virtual (rather than actual) version of something at the same abstraction level, including virtual computer hardware platforms, storage devices, and computer network resources.

Example of 15th-century Latin manuscript text with scribal abbreviations

Memory virtualization: aggregating random-access memory (RAM) resources from networked systems into a single memory pool