마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

new 메모리 할당, 해제 해야 하나요??

0 추천
위젯들이나 클래스 들을 할당할때 new를 많이 사용하는데요...

new로 할당하고 더 이상 사용하지 않을 때는 해제를 하고 싶습니다.

그냥 null 만 때려도 해제가 되는 건가요??
시베리아수컷타이거 (560 포인트) 님이 2013년 4월 1일 질문

1개의 답변

+2 추천
 
채택된 답변
자바라는 언어에 대해서 이해가 필요하신것 같네요.

new를 하면 메모리상에 새로운 객체가 생기는데, 이 객체를 할당한 변수를 레퍼런스라고 합니다.

그런데 이 레퍼런스에 null을 넣으면

원래 할당되어 있는 메모리상의 객체는 레퍼런스를 잃게 됩니다.

이렇게 모든 레퍼런스를 잃은 객체는 GC의 대상이 되는데요.

GC는 가상머신에서 주기적으로 실행되거나 System.gc() 메서드 호출을 통해 수행됩니다.

GC가 실행되면 메모리상에 레퍼런스를 모두 잃은 객체가 자동으로 메모리 상에서 제거됩니다.

한번에 너무 많은 객체를 생성하거나 참조가 너무 복잡하여 레퍼런스를 계속 물고 있거나 하지만 않으신다면

안드로이드의 경우 레퍼런스가 있는데도 사라져 버리는 객체가 있으니

크게 신경쓰실 문제는 아닙니다.
퐁풍 (8,740 포인트) 님이 2013년 4월 1일 답변
시베리아수컷타이거님이 2013년 4월 1일 채택됨
답변 감사드립니다. 자바에 대해서 공부를 더욱 열심히 해야 겠군요.
그동안 C로  malloc에 대한 free를 명확히 작업을 하여서 그런지 new 이후에 계속 free를 시켜주고 싶은 욕망이 있네요. 아이폰 작업 할때도 직접 일일히 release를 시켜줬던지라 .ㅎ
...