4581b97809
There are three categories of metadata: - Base allocations are used for bootstrap-sensitive internal allocator data structures. - Arena chunk headers comprise pages which track the states of the non-metadata pages. - Internal allocations differ from application-originated allocations in that they are for internal use, and that they are omitted from heap profiles. The metadata statistics comprise the metadata categories as follows: - stats.metadata: All metadata -- base + arena chunk headers + internal allocations. - stats.arenas.<i>.metadata.mapped: Arena chunk headers. - stats.arenas.<i>.metadata.allocated: Internal allocations. This is reported separately from the other metadata statistics because it overlaps with the allocated and active statistics, whereas the other metadata statistics do not. Base allocations are not reported separately, though their magnitude can be computed by subtracting the arena-specific metadata. This resolves #163.
41 lines
1.6 KiB
C
41 lines
1.6 KiB
C
/******************************************************************************/
|
|
#ifdef JEMALLOC_H_TYPES
|
|
|
|
#endif /* JEMALLOC_H_TYPES */
|
|
/******************************************************************************/
|
|
#ifdef JEMALLOC_H_STRUCTS
|
|
|
|
#endif /* JEMALLOC_H_STRUCTS */
|
|
/******************************************************************************/
|
|
#ifdef JEMALLOC_H_EXTERNS
|
|
|
|
void *huge_malloc(tsd_t *tsd, arena_t *arena, size_t size, bool zero,
|
|
bool try_tcache);
|
|
void *huge_palloc(tsd_t *tsd, arena_t *arena, size_t usize, size_t alignment,
|
|
bool zero, bool try_tcache);
|
|
bool huge_ralloc_no_move(void *ptr, size_t oldsize, size_t size,
|
|
size_t extra, bool zero);
|
|
void *huge_ralloc(tsd_t *tsd, arena_t *arena, void *ptr, size_t oldsize,
|
|
size_t size, size_t extra, size_t alignment, bool zero,
|
|
bool try_tcache_alloc, bool try_tcache_dalloc);
|
|
#ifdef JEMALLOC_JET
|
|
typedef void (huge_dalloc_junk_t)(void *, size_t);
|
|
extern huge_dalloc_junk_t *huge_dalloc_junk;
|
|
#endif
|
|
void huge_dalloc(tsd_t *tsd, void *ptr, bool try_tcache);
|
|
arena_t *huge_aalloc(const void *ptr);
|
|
size_t huge_salloc(const void *ptr);
|
|
prof_tctx_t *huge_prof_tctx_get(const void *ptr);
|
|
void huge_prof_tctx_set(const void *ptr, prof_tctx_t *tctx);
|
|
bool huge_boot(void);
|
|
void huge_prefork(void);
|
|
void huge_postfork_parent(void);
|
|
void huge_postfork_child(void);
|
|
|
|
#endif /* JEMALLOC_H_EXTERNS */
|
|
/******************************************************************************/
|
|
#ifdef JEMALLOC_H_INLINES
|
|
|
|
#endif /* JEMALLOC_H_INLINES */
|
|
/******************************************************************************/
|