자바 프로그램의 구동 원리
-
소스코드를 작성 (.java 확장자의 소스 파일)
-
컴파일러(javac.exe)가 바이트코드로 변환한다. (.class 확장자의 클래스 파일)
-
런처(java.exe)로 자바 가상 머신을 구동시킨다.
-
자바 가상 머신(JVM)이 바이트코드를 해석하여 자바 프로그램이 실행된다.
자바 가상 머신 (JVM, Java Virtual Machine)
-
자바 프로그램의 클래스 파일들은 운영체제에서 직접 동작하는 것이 아니라 "JVM" 위에서 동작하기 때문에 윈도우든 리눅스든 맥이든 어느 운영체제에서 실행 시킬 수 있다.
자바의 메모리 영역
-
5개의 영역으로 분류되지만 메서드, 힙, 스택 영역을 보겠습니다.
메모리 영역 | 용도 | 보존 기간 |
메서드 = 클래스 = 스태틱 |
- 가장 먼저 데이터가 저장되는 공간 - 클래스 로더에 의해 로딩된 클래스, 메서드, 클래스 변수(static), 전역 변수가 저장 |
- 프로그램의 시작부터 종료까지 메모리에 남는다. - 명시적인 Null 선언시 GC 청소 대상 |
힙 | - 런타임 시 결정되는 참조형 데이터 타입이 저장 되는 공간 - new 연산자를 통해 생성된 객체가 저장 되는 공간 |
- 객체가 더 이상 안쓰이거나, 명시적인 Null 선언 시 GC 청소 대상 |
스택 | - 컴파일 시 결정되는 기본형 데이터 타입이 저장 되는 공간 - 지역변수, 매개변수, 리턴값, 참조변수 등이 저장됨 |
- { } 또는 메서드가 끝날 때까지 |
'Programming Language > Java' 카테고리의 다른 글
[Java] Iterator, hasNext() 와 next() (0) | 2021.01.18 |
---|---|
[Java] Map 출력 (entrySet, keySet, Iterator) (0) | 2021.01.18 |
[Java] 오버로딩(Overloading) 과 오버라이딩(Overriding) (0) | 2021.01.13 |
[Java] 클래스, 객체, 인스턴스의 차이 (0) | 2021.01.13 |
[Java] 문자열 String 역순 (0) | 2021.01.12 |