タイプポイントstruct {
x、y int
}
var m = map [int]*point {}
func main(){
fillmap()
削除(M、1)
runtime.gc()
time.sleep(time.second)
fmt.println(m)
}
func fillmap(){
p:=&ポイント{1、2}
runtime.setFinalizer(P、func(p *point){
fmt.printf( "ファイナライズ:%p%v \ n"、p、p)
})
m [1] = p
fmt.printf( "Put in Map:%p%v \ n"、p、p)
} output:
この例では、ポインター値(p)がマップに入れられ、ファイナライザーがゴミ収集に呼び出されるように設定されています。マップからエントリを削除し、ガベージコレクションを強制した後、ファイナライザーが呼び出され、ポインターが実際にマップから削除されたことを証明します。分析と実用的な例では、ポインターのマップからエントリを削除すると、ではない
はメモリリークを引き起こすと結論付けることができます。 GOランタイムは、クリアされた値をゼロにすることにより、適切なガベージコレクションを保証し、他の参照が存在しないときに尖ったオブジェクトを取り戻すことができます。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3