티스토리 뷰

자바는 C/C++ 과는 다르게 더 이상 참조되지 않으면 객체들이 사용하던 메모리가 자동으로 회수된다.

public Object pop(){
	if(size == 0)
    	throw new EmptyStackException();
    Object result = elements[--size];
    elements[size] = null; // 쓸모없는 reference 를 제거
    return results;
}
  • 불필요한 객체를 null로 만들면 메모리에서 바로 제거되며 나중에 실수로 그 참조를 사용하더라도 NullpointException이 바로 일어나도록 할 수 있다.
  • 자체적으로 관리하는 메모리가 있는 클래스를 만들 때는 메모리 누수가 발생하지 않도록 주의해야 한다. (ex. element 가 free 되면 object reference 들은 모두 null 처리가 되어야 한다.)
  • 캐시(cache)도 메모리 누수가 흔히 발생한다. WeakHasMap을 캐시로 사용하면 Key값의 외부 참조에 따라 결정되도록 할 수 있다.
  • 메모리 누수가 흔해 발견되는 또 한 곳은 콜백과 리스너이다. 명시적으로 콜백을 deregister 시키지 말고 약한 참조(weak reference)를 사용하거나 키값들을 weakHashMap을 사용해 저장하라.
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함