자바에서 효율적인 힙메모리 사용에 관한 간단한 질문입니다.
꼬꼬마
안녕하세요.
저는 J2ME로 프로그래밍을 하고 있는데요.
아시다시피 핸드폰 프로그램이란게 메모리에 관해 굉장히 많은 신경을 써야되잖아요.
프로그램 사용하다가 아래와 같은 궁금증이 생겨서 물어봅니다.
멤버변수:
Vector v;
함수(){
v=new Vector(); ======이때 힙메모리를 사용하죠.
}=========================이 함수를 빠져 나오면 더 이상 Vector v를 사용할 필요가 없다고 한다면,
쓸데없이 메모리를 차지하고 있는 거잖아요.
그래서 메모리를 해제시키려면, 함수안에서 v=null;이라고 하면
되는건가요?
자바를 핸드폰에서 쓸려니 메모리 사용에 제한이 너무 많아요.
자바책은 두꺼운걸로 두권정도 있는데 이런것에 대해서는 나와 있지 않네요.
코딩할때 메모리 사용을 효율적으로 사용하는 테크닉에 대한 좋은 자료나 사이트 있으면 좀 추천해주세요.
읽어주셔서 감사합니다.^^;
-
하예
모두들 답변감사드립니다.
-
엘보어
기본적으로 null 을 대입해주면, 레퍼런스가 끊어지겠죠. 다음 jvm 이 해준다고 하는데, 언제 해줄지 모르고, 또한, jvm 버젼마다 틀린데, 최근 버젼에는 heap 영역의 메모리를 청소하지 않는다는 이야기도 있더군요, heap 영역을 청소하다 문제가 좀 발생해서. 그래서, 뭐, 믿을만한 방법이 없는것 같네요.
-
두온
clear() 함수로 항목들을 비워 줘야 겠습니다. 그리고, null을 대입하고, 나머지는 jvm이 알아서 합니다.
-
꽃달
v = null 이라고 해주지 않아도 함수밖으로 빠져 나오면 가비지 컬렉터가 알아서 해준다고 알고 있습니다.
그런데 다만 v = null 이라고 해준다면 v 레퍼런스 변수가 어떠한 객체를 가리키지 않으므로 더 빨리 가비지 컬렉터 에 의해 메모리 헤제가 될거 같습니다. 어느정도까지 차이가 날지는 모르겠네요.. 혹시 잘못된 답변이라면 지적바랍니다.^^