프로그래밍/Java

자바의 메모리 관리에 대해서...

standwally 2014. 1. 4. 17:28

자바에서 객체가 만들어지면 힙(Heap)이라는 메모리 공간에 저장됩니다.

모든 객체는 (언제, 어디에서, 어떻게 만들어졌든 상관없이) 힙에서 살지요. 하지만 우리가 기존에 알고 있던 메로리 힙과는 조금 다릅니다. 가비지 컬렉션 기능이 있는 힙이지요.

객체를 만들면 자바에서는 그 객체의 크기에 따라 힙 안에 적당한 메모리 공간을 할당합니다. 예를 들어, 인스턴스 변수 15개가 있는 객체를 만들려면 아마도 인스턴스 변수 두 개만 있는 객체와 비교해서 공간을 더 많이 잡아먹겠죠?

그런데 그 공간을 되찾아오려면 어떻게 해야 될까요?

어떤 객체가 더 이상 필요 없을 때 어떻게 힙에서 치워버릴 수 있을까요?

자바에서는 그런 메모리 관리를 자동으로 처리해줍니다. JVM에서 어떤 객체가 절대로 다시 쓰이지 않을 것이라는 결론을 내릴 수 있으면 그 객체는 가비지 컬렉션 대상이 됩니다.

그리고 메모리가 모자라게 되면 가비지 컬렉터가 작동하면서 더 이상 사용할 수 없는 객체를 치워버려서 재활용할 수 있는 메모리 공간을 확보합니다.

- Head for first Java 중에서