JDK
: 자바 개발 도구 - JVM용 소프트웨어 개발 도구JRE
: 자바 실행 환경 - JVM용 OSJVM
: 자바 가상 기계 - 가상 컴퓨터프로그램은 개발자가 개발 도구를 이용해 개발하고 운영체제를 통해 물리적인 컴퓨터인 하드웨어 상에서 구동된다.
JDK
를 이용해 개발된 프로그램은 JRE
에 의해 가상 컴퓨터인 JVM
상에서 구동된다.
객체 지향 프로그래밍의 메모리 사용방식은 이 데이터 저장 영역을 스태틱, 스택, 힙 영역으로 분할해서 사용한다.
스태틱
영역 - 클래스
들의 놀이터스택
영역 - 메서드
들의 놀이터힙
영역 - 객체
들의 놀이터절차적/구조적 프로그래밍에서는 함수라고, 객체지향에서는 메서드라 부름. (역할 동일)
그러나, 함수와는 다르게 메서드는 무조건 클래스 내에 존재해야 한다.
객체 지향 언어에서 클래스 외부에 존재할 수 있는 것은 없기 때문
main()
메서드는 프로그램이 실행되는 시작점.
JRE
가 main()
메서드 확인
JRE
가 JVM
부팅.
JVM
이 java.lang
패키지 스태틱 영역
에 가져다 놓음java.lang
패키지 : 모든 자바 프로그램이 반드시 포함하게 되는 패키지. 이것이 있기에 System.out.println()
같은 메서드 쓸 수 있음.JVM
이 개발자가 작성한 모든 클래스와 임포트 패키지 스태틱
영역에 놓음main()
메서드를 위한 스택 프레임
이 스택
영역에 할당됨main()
메서드가 끝나면 JRE
는 JVM
을 종료하고 JRE
자체도 운영체제 상의 메모리에서 사라진다.
JVM
기동 중지, JRE
가 사용했던 시스템 자원을 운영체제에 반납변수는 스태틱, 스택, 힙 영역 중 어디에 있는가?
세 군데 모두에 있다!
각각의 이름도 지역변수, 클래스 멤버변수, 객체 멤버 변수로 다르다.
스택프레임
안에서 일생을 보낸다. 스택 프레임이 사라지면 함께 사라진다.스태틱
영역에 한번 자리잡으면 JVM
이 종료될때까지 고정된 상태로 그 자리를 지킨다.힙
에서 일생을 보낸다. 객체와 함께 가비지 컬렉터(힙 메모리 회수기)에 의해 일생을 마친다.두 메서드 사이에 값을 전달하는 방법
static
붙인다. -> 스태틱 영역에 변수 공간이 할당된다.프로젝트 규모에 따라 코드가 커지면서 여러 메서드에서 전역 변수의 값을 변경하기 시작하면 전역 변수에 저장되어 있는 값을 파악하기 쉽지 않다는 주의점이 있다.
멀티 스레드
: 스택 영역을 스레드 개수만큼 분할해서 쓰는 것.
멀티 프로세스
: 다수의 메모리를 갖는 것.(스태틱, 스택, 힙으로 구성된 메모리 자체를 여러개 쓰는 것)
스프링 입문을 위한 자바 객체 지향의 원리와 이해