728x90
반응형
메모리 영역
메모리 영역은 JVM
stack과 heap으로 구분된다
객체 생성시 메모리에 올라가는 순서
- 객체를 담는 변수가 Stack 영역에 올라감
- Heap 영역에 객체의 필드에 묵시적 초기화 된 값이 올라감
- Heap영역 필드에 각각 라벨링 (주소 값 할당)
- Stack의 변수가 Heap의 라벨링 된 필드 주소를 참조
- heap 필드 영역에 명시적 초기화 값 전달
필드의 초기화
묵시적 초기화: 기본 값으로 채워지는 것
명시적 초기화: 사용자가 정의한 값으로 초기화 되는 것
new 객체()
생성자를 통해 객체 생성 시 heap 영역에 객체의 필드가 올라간다
생성되는 객체의 필드는 기본 값을 가진다 (값이 있어야만 메모리 영역에 올라갈 수 있음)
메소드는 메모리 영역 중 Method Area에 따로 저장된다
객체 생성의 결론은 라벨링(주소 값 할당)
객체를 만들기 위해 class는 데이터 type으로 작동
변수의 주소 값이 같으면 서로 같은 객체를 참조 중인 것
쓰레기 객체: stack영억으로 부터 참조가 끊어진 객체는 접근할 수 없기 때문에 사용 불가
가비지 컬렉터가 자동으로 관리해줌 (대신 개발자가 직접 관리하는 기능은 없음)
-> 언제 제거하는지 알 수 없고 상대적으로 느림
가비지 컬렉터
쓰레드로 만들어짐 -> 우선 순위에 따라 cpu 점유를 하기 때문에
느리게 제거되더라도 뻑나는 일은 없다..! (쓰레기 객체가 많아짐에 따라 우선 순위가 높아짐)
참조 변수의 출력
참조 변수의 출력 시 String으로 출력됨 (toString()이 생략된 것)
반응형
'프로그래밍 언어 > Java' 카테고리의 다른 글
Java) 10/25- VO Class와 JDBC (0) | 2021.10.25 |
---|---|
Java) 10/25 - Class 배열 (0) | 2021.10.25 |
Java) 10/21 - 관계 (0) | 2021.10.21 |
Java) 10/20 - 생성자 (0) | 2021.10.20 |
Java) 10/20 - 필드와 메소드 (0) | 2021.10.20 |
댓글