golangのメモリリークを検出する方法
Goでは、組み込みのruntimeパッケージを使用してメモリリークを検出できます。手順は次のとおりです。
- ネイティブに日本語で言い換えてください。オプションは1つだけです:ランタイム
import "runtime"
- ランタイム。GC()
runtime.GC()
- runtime.ReadMemStats()
var memStats runtime.MemStats
runtime.ReadMemStats(&memStats)
- アロケ,(アロック)
- 合計配分
- mallocs
- 合計アロケーション
prevTotalAlloc := memStats.TotalAlloc
// do something
runtime.GC()
runtime.ReadMemStats(&memStats)
currentTotalAlloc := memStats.TotalAlloc
if currentTotalAlloc > prevTotalAlloc {
// 发生了内存泄漏
}
Go言語のガベージコレクション機能により、メモリリークが発生しづらい点に留意する。メモリ使用量が過大になった場合は、プロファイリングツールを利用してメモリリークが実際に発生しているかを判断する。