Crate jemalloc_sys

source ·
Expand description

Rust bindings to the jemalloc C library.

jemalloc is a general purpose memory allocation, its documentation can be found here:

jemalloc exposes both a standard and a non-standard API.

Standard API

The standard API includes: the malloc, calloc, realloc, and free, which conform to to ISO/IEC 9899:1990 (“ISO C90”), posix_memalign which conforms to conforms to POSIX.1-2016, and aligned_alloc.

Note that these standard leave some details as implementation defined. This docs document this behavior for jemalloc, but keep in mind that other standard-conforming implementations of these functions in other allocators might behave slightly different.

Non-Standard API

The non-standard API includes: mallocx, rallocx, xallocx, sallocx, dallocx, sdallocx, and nallocx. These functions all have a flags argument that can be used to specify options. Use bitwise or | to specify one or more of the following: MALLOCX_LG_ALIGN, MALLOCX_ALIGN, MALLOCX_ZERO, MALLOCX_TCACHE, MALLOCX_TCACHE_NONE, and MALLOCX_ARENA.

Environment variables

The MALLOC_CONF environment variable affects the execution of the allocation functions.

For the documentation of the MALLCTL namespace visit the jemalloc documenation.

Structs

Constants

Statics

  • jemalloc’s background_thread support is known not to work on these targets:
  • targets that don’t support unprefixed malloc
  • jemalloc is known not to work on these targets:
  • jemalloc-sys is not tested on these targets in CI:
  • Compile-time string of configuration options.
  • Allows overriding the function which emits the text strings forming the errors and warnings if for some reason the STDERR_FILENO file descriptor is not suitable for this.

Functions

  • Align the memory allocation to start at an address that is a multiple of align, where a is a power of two.
  • Use the arena specified by the index a.
  • Align the memory allocation to start at an address that is a multiple of 1 << la.
  • Use the thread-specific cache (tcache) specified by the identifier tc.
  • Allocates size bytes of memory at an address which is a multiple of alignment.
  • Allocates zero-initialized space for an array of number objects, each of whose size is size.
  • Deallocates previously-allocated memory region referenced by ptr.
  • free
    Deallocates previously-allocated memory region referenced by ptr.
  • General interface for introspecting the memory allocator, as well as setting modifiable parameters and triggering actions.
  • Like mallctl but taking a mib as input instead of a name.
  • Translates a name to a “Management Information Base” (MIB) that can be passed repeatedly to mallctlbymib.
  • Allocates size bytes of uninitialized memory.
  • Writes summary statistics via the write_cb callback function pointer and cbopaque data passed to write_cb, or malloc_message if write_cb is null.
  • Returns the real size of the previously-allocated memory region referenced by ptr.
  • Allocates at least size bytes of memory according to flags.
  • Returns the real size of the allocation that would result from a mallocx function call with the same arguments.
  • Allocates size bytes of memory at an address which is a multiple of alignment and is placed in *ptr.
  • Resizes the previously-allocated memory region referenced by ptr to be at least size bytes.
  • Resizes the previously-allocated memory region referenced by ptr to size bytes.
  • Returns the real size of the previously-allocated memory region referenced by ptr.
  • Deallocates previously-allocated memory region referenced by ptr with size hint.
  • Resizes the previously-allocated memory region referenced by ptr in place to be at least size bytes, returning the real size of the allocation.

Type Definitions