Search code examples
node.jsmemoryv8

nodejs v8.getHeapStatistics method


In nodejs v8 module, there's a function called getHeapStatistics which return an object that contains information about memory usage:

{ 
  total_heap_size: 221540352,
  total_heap_size_executable: 5242880,
  total_physical_size: 221540352,
  total_available_size: 1286110104,
  used_heap_size: 189179192,
  heap_size_limit: 1501560832,
  malloced_memory: 16384,
  peak_malloced_memory: 1325112,
  does_zap_garbage: 0 
}

What's the meaning of each field?


Solution

  • Some good explanation from gc-heap-stats package:

    • total_heap_size: Number of bytes V8 has allocated for the heap. This can grow if usedHeap needs more.
    • used_heap_size: Number of bytes in used by application data
    • total_heap_size_executable: Number of bytes for compiled bytecode and JITed code
    • heap_size_limit: The absolute limit the heap cannot exceed (default limit or --max_old_space_size)
    • total_physical_size: Committed size

    From Node.JS docs:

    • does_zap_garbage is a 0/1 boolean, which signifies whether the --zap_code_space option is enabled or not. This makes V8 overwrite heap garbage with a bit pattern. The RSS footprint (resident memory set) gets bigger because it continuously touches all heap pages and that makes them less likely to get swapped out by the operating system.

    Self descriptive:

    • total_available_size: Available heap size
    • malloced_memory: current amount of memory, obtained via malloc
    • peak_malloced_memory: peak amount of memory, obtained via malloc