21년 2월 15일
~
한 일
- JVM 내용 학습
- JRE는 Java를 실행하기 위한 최소 환경 (JVM + 필수 라이브러리)
- Class loader는 javac이 컴파일한 결과인 자바 바이트 코드를 메모리에 로드한다.
- javap -c {class파일} : class파일 역컴파일 해서 내용 보여줌
- 모든 public class는 class이름(내부 클래스 제외)으로된 java파일로 작성되어야 한다.
- Class loader의 3단계
- Class Loader는 FQCN을 가지고 메모리에 로딩 (Loading 단계)
- FQCN(Fully Qualified Class Name): classpath, 유니크하게 클래스 구분 가능
- 정적 변수는 class loader의 링킹 단계에서 저장된다. (Linking 단계)
- class loader의 initialize 단계에서, 정적(static) 변수를 지정한 값으로 할당해주고, static block을 실행시킨다. (Initialize 단계)
- 바이트코드는 어디에 저장되나?
- Runtime Data Area중 메소드 영역에 저장된다.
- 정적 변수는 어디에 언제 저장되나?
- 클래스 로더의 Linking, Initialize단계가 끝나면 메소드 영역에 저장된다.
- 인스턴스 변수는 어디에 저장되나?
- 리터럴은 일반적으로 메소드 영역에 저장된다? (string constant pool은 힙 영역에 있다.)
- 검색 키워드: java reference type spec (어려운 내용은 tistory, velog말고 공식 문서 읽는 습관)
- 함수를 구현하기 위해서 필요한 것: Stack 프레임 -> 함수에서 사용하는 지역변수를 사용하고 함수호출이 끝나면 소멸시키기 위해서
- Java에는 reference type이 있을 뿐, Call by Reference는 없다. 오직 Pass by Value만 있다.
잘못한 것
잘한 것
느낌
할 일
- 코드스쿼드 미션하기
- 자바의 정석 읽기
- 프로그래머스 문제 풀기