본문 바로가기

Java/[패스트캠퍼스] 100% 환급 챌린지

패스트캠퍼스 환급챌린지 36일차 미션 (3월 7일) : 시그니처 백엔드 Path 초격차 패키지 Online. 강의 후기

https://fastcampus.co.kr/dev_online_besignature
수강 강의명

강의 내용

[1] JVM이 사용하는 메모리 영역
[2] 객체 생성과 static과의 관계

 

[1] JVM이 사용하는 메모리 영역

JVM의 Memory model(Runtime Data Area)

자바 클래스 파일을 실행(Runtime)하는 시점에서 데이터들을 관리 및 처리하는 공간
JVM이 자바 프로그램을 동작시킬 때 여러 개의 메모리를 이용하여 데이터를 저장하며 프로그램을 동작시킴

 

Method Area

메서드의 바이트 코드(기계어 코드)가 할당되는 공간
두 개의 영역으로 나뉨(static-zone, none-static-zone)

 

Heap Area Generation

객체가 생성되는 메모리 공간(new연산자를 이용하여 생성)
사용이 끝난 객체는 메모리에서 소멸되어야 함(메모리에 쌓이다보면 용량이 가득차게 됨)
객체를 생성할 때 메모리의 용량이 부족하면 프로그램 속도 저하 또는 오류가 발생할 수 있음
메모리의 용량은 개발자가 아닌 시스템에서 주기적으로 관리함
더 이상 사용되지 않고 남아있는 객체들은 GC(garbage collector)라는 프로세스가 주기적으로 관리함
*Method Area, Stack Area : 프로그램이 종료되면 자동적으로 소멸됨
*Heap Area : 시스템에서 소멸을 시켜주지 않기 때문에 GC에 의해 소멸됨

 

Stack Area(Call Stack Frame Area), PC register Native Method Area

메서드가 호출 되면 메서드의 기계어 코드를 할당 받고(Native Method Area), 실행 되는 메모리 공간(Call Stack Frame Area)
지역 변수, 매개 변수들이 만들어지는 공간
메서드가 호출되면 호출된 정보가 스택에 들어가게 됨
LIFO 구조로 운영 되는 메모리 공간(메서드의 호출 순서를 알 수 있다)

 

PC register Native Method Area

스택에서 메서드가 어떻게 동작되는지 카운팅하는 레지스트
PC(Program Counter)에 의해서 현재 실행 중인 프로그램의 위치가 관리됨

 

Runtime Constant Pool(Literal Pool)

상수를 저장하는 메모리 공간

문자열에서는 문자열 상수(Literal : 리터럴)가 할당 되는 메모리 공간

*문자열 상수 : "APPLE"

 

[2] 객체 생성과 static과의 관계

어떤 클래스의(객체) 모든 멤버가 static 멤버인 경우

(1) 객체를 생성하여 접근하는 방법

      객체 생성 → 클래스가 메모리에 잡힘 → 변수가 객체를 가리킴

      모든 메서드에 static키워드가 붙는다면 객체 생성 없이도 사용 가능하기 때문에 번거롭게 객체를 생성할 필요 없음

(2) 클래스 이름을 통해 접근하는 방법(권장)

      자주 사용하는 클래스들을 객체 생성없이 클래스 이름으로 바로 접근하기 위함

      static는 클래스를 사용하는 시점에 자동으로 static-zone에 기계어 코드들이 로딩됨

 

private 생성자

생성자의 접근 제어를 private로 하여 인위적으로 객체 생성을 막는 방법

객체 생성을 못하게 하여 바람직한 방법을 사용하도록 유도하기 위한 목적이다.

생성자 메서드도 메서드라 접근 제어를 갖는데, 접근 제어를 private로 변경하면 생성자 메서드를 호출할 수 없게 된다.

클래스의 메서드를 사용하려면 클래스 이름으로 호출하여 사용하면 된다.

모든 멤버가 static이라면 생성자의 접근 제어를 private로 하여 객체 생성을 막는게 바람직하다.

*생성자 메서드의 역할 : 자기 자신이 갖는 객체를 메모리에 생성함

*private 생성자를 갖는 클래스 : System, Math 등


 

수강 화면수강 화면
수강 화면

 

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
https://bit.ly/48sS29N

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr