티스토리 뷰

IT/JAVA

JVM이 사용하는 메모리 영역

긍정탁 2017. 7. 6. 09:21

JVM이 사용하는 메모리 영역

▶ 메소드 영역

-> 스레드 별 생성

->로딩된 클래스 바이트 코드 클래스 정보, 멤버 변수, static 메소드 , static변수

-> 객체를 만들지 않아도 사용 가능

-> 모든 스레드가 공유(프로세스내에서의 흐름)

힙영역

->JVM 시작할 때 생성

->객체, 배열 저장

-> 사용 되지 않는 객체는 Garbage Collector 가 자동제거

JVM 스택

-> 스레드 별 생성

-> 메소드 호출할때마다 frame을 스택에 추가

 

★ 메모리 사용 영역

1. java Main -> 실행

2. JVM 구동 -> 메소드,힙영역 생성

3. Memory 로딩

4. main 스레드 생성, JVM 스택 생성

5. main 메소드 호출

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 public class Main {
 
    public static void main(String[] args) {
        int sum = 0;
        if(sum==0)
        {
            int v2 = 10;
            int v3 = 20;
            sum = add(v2,v3);
        }
        
        System.out.println(sum);
    }
    public static int add(int a, int b)
    {
        return a+b;
    }
}
cs

12. JVM 종료

 

출력화면

변수 v2와 v2가 합쳐진 결과 30 이 출력됨을 확인 할수가 있다.

C언어를 했다면 add라는 블럭은 마치 void add(int a,int b)와 같은 일종의 함수와 같다고 생각해도 무방할것 같다.

 

 

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

[정보 올림피아드] 151번  (0) 2017.07.06
[정보 올림피아드] 150번  (0) 2017.07.06
[정보 올림피아드] 555번  (0) 2017.07.06
비 정방형 배열의 생성과 접근  (0) 2017.07.06
배열의 이름은 무엇을 의미할까?  (0) 2017.07.06
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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