GC를 지원하는 언어에서 프로그래머가 동적할당되는 메모리의 반환에 신경을 쓸 필요가 없지만
상황에 따라서 프로그래머가 객체 수명을 정확하게 알 수 있는 경우가 있잖아요. 이런 경우에 직접 해제를 해주면 퍼포먼스상에 이득이 있을텐데
D언어는 GC도 지원하고 명시적인 메모리 반환도 가능한걸로 아는데 솔직히 안써봐서 잘 모르겠고
명시적인 메모리 반환을 지원하지 않는 이유가 dangling pointer문제 때문으로 아는데
이것도 가만 생각해보니깐 해결이 가능하던데 왜 지원을 안할까요
예를 들면 C#에선
bool GC.RequestRelease(ref object p)
이래 만들어놓고 넘겨준 인자의 참조 횟수가 1이라면 p에 null을 할당하고 메모리를 해제하고 true를 리턴하고
참조 카운트가 2 이상이면 p엔 아무짓도 안하고 false 리턴
자바는 call by reference가 없어서 해결방법이 안떠오르네
퍼포가 더 떨어질 것 같지 않음?
자바에서 변수에다가 null 넣어주는게 그러자고 그러는거 같긴 하지만 그런다고 그때 반환되는게 아니고 나중에 모아서 시스템이 저 맘대로 반환
GC가 원래 다 몰아서 하는걸 프로그래머가 좀 덜어주면 퍼포먼스 상에 이득이 있을거란 얘긴데
몰아서 하나 한개씩 하나 퍼포먼스 손해날게 있나 그걸 잘 모르겠음.. 가비지 콜렉터가 많이 좋아져서 별 차이 없을듯