출처: https://jacking75.github.io/go_performance_map_gc/
원문: https://qiita.com/oywc410/items/ad8baee00f039705a5c0
아래 글 중간쯤 보면 map 사용시 race condition 발생 가능한 경우에 대해 얘기한게 있다.
http://blog.remotty.com/blog/2015/08/15/golangeuro-anjeonhan-seobiseu-mandeulgi/
map은 전역으로 쓸 경우를 만들면 안 될 것 같고, 메모리 해제도 자바처럼 강제로 해제해주지 않으면 큰 일이 날 것 같다.
package main
import (
"strconv"
)
func main() {
var dict = make(map[int]string)
// 데이터 입력
for i := 0; i < 999; i++ {
dict[i] = "WTF:" + strconv.Itoa(i)
}
for k := range dict {
delete(dict, k) //데이터 제거
}
//메모리 해제
dict = nil
// 또는
dict = make(map[int]string)
}
추가로 위 출처/원문 내용에 있는 gctrace가 윈도우에서는 안 되는 것 같다.
구글에 검색해보니 VMMap을 쓰라는데 걍 vscode의 debug 기능을 쓰는게 나을 것 같다.
끝.
map 쓸때 read는 상관없고 write 할때 락만 잘 걸어주면 됨
ㄴ 감사해요 ㅎㅎ
nil 왜쓰나 했는데 현재 go 구현에서는 delete해도 메모리 해제 안되네
ㄴ 머 그런거져 ㅎㅎ 이건 머 안 바뀔듯..