golang(go語言)調試和查看gc信息,以及gc信息解析


這里記錄一下調試golang gc的方法
啟用gc打印:

# GODEBUG=gctrace=1 go run ./main.go

程序啟動后gc將打印如下信息:

gc 65 @16.996s 0%: 0+1.0+0 ms clock, 0+0/1.0/2.0+0 ms cpu, 10->10->4 MB, 11 MB goal, 4 P
gc 66 @100.235s 0%: 0+1.0+0 ms clock, 0+1.0/1.0/2.0+0 ms cpu, 9->9->3 MB, 10 MB goal, 4 P
GC forced
gc 35 @127.931s 0%: 0+1.9+0 ms clock, 0+0/1.9/4.9+0 ms cpu, 8->8->3 MB, 9 MB goal, 4 P
scvg0: inuse: 6, idle: 12, sys: 18, released: 0, consumed: 18 (MB)
scvg0: inuse: 6, idle: 9, sys: 15, released: 0, consumed: 15 (MB)
GC forced
gc 67 @220.264s 0%: 0+0.98+0 ms clock, 0+0/0.98/2.9+0 ms cpu, 5->5->3 MB, 7 MB goal, 4 P

gc打印信息的含義依次如下:

  1. gc 65 @16.996s:第65次執行,進程已經啟動16.996秒
  2. 0%:本次執行gc占用的進程cpu時間的百分比
  3. 0+1.0+0 ms clock:本次gc的耗時。依次是STW清掃的時間, 並發標記和掃描的時間,STW標記的時間。(STW即stop-the-world,STW時間內進程完全被掛起)
  4. 0+0/1.0/2.0+0 ms cpu:本次gc占用cpu時間
  5. 10->10->4 MB:堆的大小,gc后堆的大小,存活堆的大小
  6. 11 MB goal:整體堆的大小
  7. 4 P:CPU核數
  8. GC forced:由runtime.GC()強制執行
  9. 系統內存回收信息
	scvg0: inuse: 6, idle: 12, sys: 18, released: 0, consumed: 18 (MB)
 - inuse:使用多少M內存
 - idle:剩下要清除的內存
 - sys:系統映射的內存
 - released:釋放的系統內存
 - consumed:申請的系統內存


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM