
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 붙인다. -> 스태틱 영역에 변수 공간이 할당된다.프로젝트 규모에 따라 코드가 커지면서 여러 메서드에서 전역 변수의 값을 변경하기 시작하면 전역 변수에 저장되어 있는 값을 파악하기 쉽지 않다는 주의점이 있다.
멀티 스레드
: 스택 영역을 스레드 개수만큼 분할해서 쓰는 것.
멀티 프로세스
: 다수의 메모리를 갖는 것.(스태틱, 스택, 힙으로 구성된 메모리 자체를 여러개 쓰는 것)
스프링 입문을 위한 자바 객체 지향의 원리와 이해