#. Java에는 두 가지 유형의 메모리가 있습니다. 각각 스택(Stack)과 힙(Heap)이라고 합니다.
스택은 프로그램 메모리 공간이므로 모든 기본 유형과 객체 참조가 스택에 저장됩니다.
힙은 Java 가상 머신이 객체를 저장하는 곳입니다. 객체를 생성하면 Java 가상 머신은 객체를 힙에 저장하고 생성된 객체의 주소를 스택에 넣습니다.
따라서 기본 유형 및 객체에 대한 참조는 스택에 저장됩니다.
#. 자바의 가비지 수집 메커니즘
새 객체를 새로 만들면 Java는 필요한 메모리를 할당합니다. 객체 사용을 마치면 Java의 가비지 수집기가 메모리를 회수합니다.
가비지 수집은 스레드 형태로 백그라운드에서 실행되어 유용한 참조가 없는 개체를 찾습니다. 일단 발견되면 개체가 삭제되고 메모리가 회수됩니다.
가비지 수집은 일반적으로 Java 가상 머신 간에 구현됩니다. 먼저 가비지 수집기는 실행 중인 스레드와 로드된 모든 클래스의 스냅샷을 얻습니다.
그런 다음 스레드에 관련된 모든 개체가 최근에 사용된 것으로 표시됩니다. 관련된 모든 개체가 표시되면 표시되지 않은 나머지 개체는 삭제됩니다.
가상 머신을 돕기 위해 더 이상 필요하지 않은 일부 개체를 사전에 제거하는 것이 좋습니다. 이는 참조를 null로 설정하여 수행할 수 있습니다.
예:
텍스트 t = new Test();
t.someAction();
//모두 완료
t = 널;