생성자란 클래스를 초기화 하기 위한 메서드

1. 클래스명과 동일하다

2. 반환타입 없음

3. 지역변수 사용가능

4. 사용자 정의 생성자 사용 시 디폴트 생성자를 선언해줘야한다.

 

클래스의 메서드는 자기 자신을 인자로 받는다(생략되어있다)

class Book{

public getTitle(Book this){

return this.title

}

}

Book 이 new 될 때 인스턴스 메서드가 생성되며 해당 객체의 주소가 this로 넘어간다.

static 메서드의 경우 인스턴스 생성 전에 클래스 레벨에서 저장된다. 따라서 인스턴스와 연관되지 않는다.

 

메모리 영역

메소드영역

1. 클래스 정보

클래스이름 부모 클래스 이름, 구현된 인터페이스 목록 등 클래스 자체에 대한 정보

 

2. 런타임 상수 풀

상수 풀은 컴파일 타임 상수들과 런타임 상수들을 포함합니다. 여기에는 숫자 상수, 문자열 상수, 클래스와 메서드 참조 등이 포함

런타임 상수 풀은 클래스 파일의 Constant pool table을 런타임에 사용하는 구조다.

 

3. 필드 정보

각 필드의 이름,타입,접근 제어자 등의 정보

 

4. 메서드와 과련된 데이터

각 메서드의 이름, 리턴 타입, 매개변수 타입, 접근 제어자, 메서드의 바이트코드 등

메서드의 실행  코드를 담고 있는 바이트코드

 

5. 메서드와 관련된 데이터

메서드의 리턴 타입, 매개변수 타입, 로컬 변수 테이블, 예외 처리 테이블 등

 

6. 정적 변수

클래스에 속하는 정적 변수들, 정적 변수는 클래스가 메모리로 로드될 떄 Method 영역에 저장되고, 클래스 로더에 의해 초기화

정적 변수는 클래스 로드 시 한 번 로드되고 객체들이 공유한다. 

 

7. 메서드와 필드의 심볼릭 참조

메서드와 필드외 이름 및 서명 정보. 이 정보는 런타임에 실제 메모리 주소로 변환됩니다.

 

8. 클래스 초기화 코드

클래스 초기화 블록이나 정적 초기회 블록에 포함된 코드. 클래스가 처음 로드될 때 실행됩니다.

 

 

역할

클래스 로딩

클래스 연결

클래스 초기화 

힙영역

 

메서드 영역은 JVM(Java Virtual Machine) 메모리 구조의 한 부분으로, 클래스에 대한 메타 메이터를 저장하는 곳

클래스 구조

메서드와 생정자의 바이트코드

런타임 상수 풀

정적 변수

 

 

스택영역

구조

스택 프래임 메서드 호출마다 생성되는 메모리 블록

 

흐름

메서드 호출

메서드 실행

메서드 종료

 

 

'공부일지 > Java' 카테고리의 다른 글

[JAVA] Arrays.asList()  (0) 2024.07.04
[JAVA] String, StringBuffer, StringBuilder  (0) 2024.07.01
[JAVA] 6/20 배운거 클래스  (0) 2024.06.20
[JAVA] 인터페이스와 객체지향  (0) 2024.06.19
[JAVA] 추상클래스와 인터페이스  (0) 2024.06.19

+ Recent posts