SKILL/JAVA

자바 메모리

Jedy_Kim 2017. 12. 20. 08:16
728x90
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
JAVA Source : 사용자가 작성한 JAVA 코드
JAVA Compiler : JAVA 코드를 Byte Code로 변환
 
Class Loader
    - JVM 내에 Class를 Load
    - 연결을 통해 적절히 배치하는 작업(linking)
    - Runtime 시 동적으로 읽어들여 배치(해당메모리)
    
Runtime Data area
    - JVM이 OS 위에서 실행되면서 할당받은 메모리 영역
    - Method Area, Heap, Stack, PC Registers, Constant Pool, Native Method Stack Area
        Method Area
            - 클래스 정보, static 메서드와 필드 정보, 멤버변수 정보, static 변수 정보, 바이트 코드 등을 보관
            - JVM 시작 시 생성되며, 프로그램 종료 시 해제
            - 모든 쓰레드에서 공유
        Stack Area
            - 메서드 호출 시 데이터 영역이 생성
            - 지역변수, 매개변수, 임시변수, 레퍼런스 변수
            - 연산 중 발생하는 임시 데이터 저장
            - { } 또는 메서드가 끝날 때 해제
            - 자동 초기화 되지 않음(쓰레기 값)
        PC Registers
            - 현재 수행 중인 JVM의 명령 주소를 저장
            - CPU에서 명령어를 수행하면 CPU는 수행하는 동안 필요한 정보를 CPU내의 기억장치(Register)에 저장
            - 연산 결과값을 전달하기 전에 저장하는 CPU내의 기억장치
        Native Method Stack Area
            - JAVA외의 언어로 작성된 Native 코드를 위한 Stack
            - JNI(Java Native Interface)를 통해 호출되는 c/c++ 등의 코드를 수행하기위한 Stack
            - 타 언어의 매개변수, 지역변수 등을 저장
 
Execution engine
    - Class Loader를 통해 JVM 내의 바이트 코드를 실행
    - 명령어 단위로 실행
cs


반응형

'SKILL > JAVA' 카테고리의 다른 글

자바 제네릭 삽입, 삭제, 검색...직접 구현  (0) 2017.12.20
자바 하노이의 탑 예제  (0) 2017.12.20
자바 Queue 기본 예제  (0) 2017.12.19
자바 Stack 기본예제  (0) 2017.12.19
자바 IP관련 클래스 : InetAddress  (0) 2017.12.19