package z import "sync/atomic" var numBytes int64 // NumAllocBytes returns the number of bytes allocated using calls to z.Calloc. The allocations // could be happening via either Go or jemalloc, depending upon the build flags. func NumAllocBytes() int64 { return atomic.LoadInt64(&numBytes) } // MemStats is used to fetch JE Malloc Stats. The stats are fetched from // the mallctl namespace http://jemalloc.net/jemalloc.3.html#mallctl_namespace. type MemStats struct { // Total number of bytes allocated by the application. // http://jemalloc.net/jemalloc.3.html#stats.allocated Allocated uint64 // Total number of bytes in active pages allocated by the application. This // is a multiple of the page size, and greater than or equal to // Allocated. // http://jemalloc.net/jemalloc.3.html#stats.active Active uint64 // Maximum number of bytes in physically resident data pages mapped by the // allocator, comprising all pages dedicated to allocator metadata, pages // backing active allocations, and unused dirty pages. This is a maximum // rather than precise because pages may not actually be physically // resident if they correspond to demand-zeroed virtual memory that has not // yet been touched. This is a multiple of the page size, and is larger // than stats.active. // http://jemalloc.net/jemalloc.3.html#stats.resident Resident uint64 // Total number of bytes in virtual memory mappings that were retained // rather than being returned to the operating system via e.g. munmap(2) or // similar. Retained virtual memory is typically untouched, decommitted, or // purged, so it has no strongly associated physical memory (see extent // hooks http://jemalloc.net/jemalloc.3.html#arena.i.extent_hooks for // details). Retained memory is excluded from mapped memory statistics, // e.g. stats.mapped (http://jemalloc.net/jemalloc.3.html#stats.mapped). // http://jemalloc.net/jemalloc.3.html#stats.retained Retained uint64 }