Java는 GC(Garbage Collection)라는 쓰레드를 생성하여 사용하지 않는 객체를 제거 하도록 설계하였다. 우리가 new연산자를 통해서 메모리 할당을 수행하도록 하지만, Deallocation은 JVM이 대신 수행해준다. JVM은 Heap에 만들어진 객체 중 더 이상 참조하지 않은 것들을 제거해준다. 따라서 Java 개발자들은 메모리 관리를 직접하지 않아도 된다!
개발자가 메모리 관리를 직접하진 않지만 JVM의 메모리 구조를 알아야 Java 의 특징을 잘 이해할수있다
- Class Area(Method Area) : 메모리로 읽어온 클래스의 정보가 등록된다. 이때 클래스는 Class Area에 한번만 등록된다.
- Heap : 객체를 new 연산으로 생성하게 되면 각 객체별로 저장된다.
- Stack Area : 실행하는 메소드가 등록된다. 메소드 종료시에는 할당된 메모리가 자동으로 제거된다.
this()로 생성자를 호출할때는 객체를 참조하기만 해서 heap 메모리영역에 객체가 두번 생기지 않는다. JAVA는 내부적으로 this 키워드를 method parameter로 주기 때문에 Stack Area 에서도 한번만 생성된다.
'JAVA' 카테고리의 다른 글
싱글턴(Singleton)패턴 이란? - 싱글톤 구현 방법 6가지 (0) | 2021.06.27 |
---|---|
Comparable , Comparator 인터페이스 차이점 (0) | 2021.02.15 |
JAVA - 10진수를 2진수, 8진수로 변환하기 (0) | 2021.02.10 |
Collection 중복체크 - equals(), hashCode() (0) | 2021.01.31 |
Class Object Method 정리 (0) | 2021.01.30 |