Lumiera
0.pre.03
»edit your freedom«
|
Go to the source code of this file.
Memory management scheme for cyclically used memory extents.
In this context, Extent denotes a larger block of memory to hold a cluster of smaller records, which are closely interrelated and will be managed and de-allocated together. The typical usage involves a constant demand for further memory, with is satisfied by putting further unused extents into use; older extents will fall out of use eventually, and can then be placed back into a buffer of free extents. In accordance to overall demand, this reserve buffer can be scaled up and down to avoid holding larger amounts of unused memory, while the availability of a baseline amount of memory can be enforced.
Definition in file extent-family.hpp.
#include "vault/common.hpp"
#include "lib/uninitialised-storage.hpp"
#include "lib/iter-adapter.hpp"
#include "lib/nocopy.hpp"
#include "lib/util.hpp"
#include <algorithm>
#include <memory>
#include <vector>
#include <array>
Classes | |
struct | ExtentFamily< T, siz >::Extent |
logical structure of a memory Extent More... | |
struct | ExtentDiagnostic< T, siz > |
struct | ExtentDiagnostic< T, siz > |
class | ExtentFamily< T, siz > |
Memory manager to provide a sequence of Extents for cyclic usage. More... | |
struct | ExtentFamily< T, siz >::IdxLink |
Iteration »State Core« based on Extents index position. More... | |
struct | ExtentFamily< T, siz >::Storage |
Entry in the Extents management datastructure. More... | |
Functions | |
template<typename T , size_t siz> | |
ExtentDiagnostic< T, siz > | watch (ExtentFamily< T, siz > &extentFamily) |
Variables | |
const size_t | ALLOC_SAFETY_LIMIT = 8_GiB |
Namespaces | |
vault | |
Vault-Layer implementation namespace root. | |
vault::mem | |
Memory Management. | |