GC를 지원하는 언어에서 프로그래머가 동적할당되는 메모리의 반환에 신경을 쓸 필요가 없지만

상황에 따라서 프로그래머가 객체 수명을 정확하게 알 수 있는 경우가 있잖아요. 이런 경우에 직접 해제를 해주면 퍼포먼스상에 이득이 있을텐데

D언어는 GC도 지원하고 명시적인 메모리 반환도 가능한걸로 아는데 솔직히 안써봐서 잘 모르겠고

명시적인 메모리 반환을 지원하지 않는 이유가 dangling pointer문제 때문으로 아는데 

이것도 가만 생각해보니깐 해결이 가능하던데 왜 지원을 안할까요


예를 들면 C#에선

bool GC.RequestRelease(ref object p)

이래 만들어놓고 넘겨준 인자의 참조 횟수가 1이라면 p에 null을 할당하고 메모리를 해제하고 true를 리턴하고

참조 카운트가 2 이상이면 p엔 아무짓도 안하고 false 리턴

자바는 call by reference가 없어서 해결방법이 안떠오르네