Community

개발자 99% 커뮤니티에서 수다 떨어요!

← Go back
TIL#09_Mission 연습문제 풀기
by bora
#pragmatic
2년 전
563
  • 연습문제 18.
    일부 자바 개발자들은 어떤 객체를 사용한 다음에는 반드시 그 객체를 가리켰던 변수를 NULL로 설정한다. 왜 이것이 좋은 생각일까?

  • 풀이과정


    더이상 사용되지 않는 자원이기에 NULL로 해줌으로써 불필요한 리소스를 막기 위해서 NULL 로 설정해 준다. 메모리 누수로 인한 Memory Leak 현상을 막기 위하여


  • 찾아본 내용
    -. java 메모리 누수 Memory Leak
    https://byul91oh.tistory.com/6
    -. 다쓴 객체 참조를 해제하라 (Effective java #7)
    https://lelecoder.com/20

=> 가비지 컬렉터를 갖춘 자바와 같은 언어를 사용하면, 가비지 컬렉터가 다 쓴 객체를 알아서 회수한다. 그래서 메모리 문제를 개발자가 전혀 신경쓰지 않아도 된다고 오해할 수 있다.

  • 책에 나온 해답
    변수를 null로 설정하면 그 변수가 가리키던 객체를 가리키는 포인터의 수가 하나 줄어든다. 포인터 개수가 0이 되면 그 객체는 가비지 컬렉션 대상이 된다. 실행 시간이 길어서 메모리 사용량이 시간이 지남에 따라 늘어나지 않도록 신경 써야 하는 프로그램이라면 변수에 null을 설정하는 것이 중요할 수 있다.

  • 느낀점..


    사실 복잡한 프로그램이나 메모리 영향이 크지 않은 상황에서는 철저하게 NULL로 선언해주지 못했다.


    그리고, 이 문제를 읽었을 때, 당연히 NULL 로 해줘야지! 라고 내뱉었지만, 정작 이 내용을 자연스럽고 이해하기 쉽게 말하지 못한다는 사실에 충격이었다.;;


    그래서 알고는 있지만, 깊이 자세하게 알아보지 않았던 내용에 대해 찾아보게 되어 좋았다