JAVA

Java 컴파일 과정 및 메모리 구조

JUN0126 2021. 3. 21. 14:52

JAVA 메모리 구조

자바는 OS과는 독립적이다 그 이유는 JVM(Java Virtual Machine)이 OS와 프로그램 사이에서 기계어로 해석해주는

역할을 하기 때문이다. 따라 어떠한 OS든 자바가 설치 되어있다면 JVM에 의하여 .java 코드가 기계어로 해석 될 수 있다.

 

자바 개발자들이 Eclipse나 다른 개발 툴을 사용해 .java파일을 생성한 후 Build라는 작업을 통하여 Compiler을 통하여 

.class파일을 생성하게 됩니다. 현재 이 파일은 컴퓨터가 읽을 수 없는 자바 바이트코드 입니다.

 

이렇게 생성된 자바 바이트 코드(.class)는 ClassLoader에 의해서 JVM 내로 로드 되고 실행 엔진에 의해 기계어로 해석되어 메모리상에 배치 되게 됩니다.

 

----- 메모리 영역 ------- 

Stack Area 

 - 클래스 내의 메소드에서 사용되는 정보들이 저장되는 공간입니다. 매개변수, 지역변수, 리턴값 등이 저장되며

LIFO 방식으로 메소드 실행 시 저장되었다가 실행이 완료되면 제거됩니다, 임시 저장공간인 느낌

 

Method Area

 - 클래스와 메소드, 멤버(클래스,인스턴스)변수와 상수 정보등이 저장되는 공간

 

Heap Area 

 -  New 명령어를 통해 생성한 인스턴스와 배열 등의 참조형 변수 정보가 저장되는 공간

   Method Area에 올라온 클래스들만 생성이 가능하며, GC(Garbege Collection)의 대상이 된다.

 

GC (Garbage Collector)

 - 참조되지 않은 객체들의 메모리를 회수하는 역할

참조 

aljjabaegi.tistory.com/387

'JAVA' 카테고리의 다른 글

컬렉션 프레임워크  (0) 2021.07.10
프로세스와 쓰레드  (0) 2021.07.09
상속  (0) 2021.07.07
equals()와 hashCode() 함수 차이  (0) 2021.07.03
예외(Exception) 처리  (2) 2021.06.30