Heap Profile 中 head 各字段的含义

一个标准的 heap profile 头如下所示:

heapprofile in_use_object: in_use_space [alloc_object: alloc_space] @ stack_trace

Heap Profile 中 heap 各字段的含义

  • HeapSys,从系统申请的用于 Heap 的内存大小
  • HeapInuse,正在使用的 Heap
  • HeapIdle,没有使用的 Heap
  • HeapSys = HeapInuse + HeapIdle
  • HeapReleased, HeapIdle 中已经归还给 OS 的部分
  • HeapIdle - HeapReleased,可以归还给 OS 但是还没归还的部分
  • Sys - HeapReleased,由 Go 持有的内存
  • HeapAlloc,分配出去的(由用户持有的)Heap,包括 reachable 的和还没被 GC 到的
  • NextGC,下一次 GC 的阈值,当 HeapAlloc >= NextGC 时就意味着即将 GC 了
  • LastGC,最近一次 GC 结束的时间戳