자바는 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)
- 참조되지 않은 객체들의 메모리를 회수하는 역할
참조
'JAVA' 카테고리의 다른 글
컬렉션 프레임워크 (0) | 2021.07.10 |
---|---|
프로세스와 쓰레드 (0) | 2021.07.09 |
상속 (0) | 2021.07.07 |
equals()와 hashCode() 함수 차이 (0) | 2021.07.03 |
예외(Exception) 처리 (2) | 2021.06.30 |