記錄

JAVA) 메모리 구조 -1 본문

Computer language/JAVA

JAVA) 메모리 구조 -1

surhommejk 2018. 2. 8. 14:47







Main Ex)

public class MemoryStructure {

    public static void main(String[] args) {

        int lv = 500;
        System.out.println("iv 변수값 : " + lv);
        
        Test t = new Test();
        t.write();
    }
} // class end

/*
* 1.   main 영역(프레임)이 stack영역에 할당된다
* 2.   stack영역 안에 main 영역(프레임)에 int lv = 500이 선언과 초기화 된다
* 3.   stack영역 안에 main 영역(프레임) 위에 System.out.println을 위한 영역(프레임)이 할당되고
*      그 곳에서 파라미터 받아서 실행 뒤 pop

* 4.   Test t = new Test(); 를 통해서
*          1) Test 타입의 t 변수가 main 영역(프레임) 내에 할당되고
*          2) new를 만나면서 주소값임을 확인하고
*          3) 힙에 Test를 위한 공간이 할당되면서 main의 t 에 Test의 주소값이 할당된다
* cf. Test t에서 함수 내에서 구현 및 선언된 지역변수는 해당 메소드가 호출이 되었을 때
* stack 영역에서 구현된다. 힙에 올라가는 것은 오직 Test t의 지역변수, 함수명 두 가지이다

* 5.   t. 을 통해 주소값을 따라 Test로 들어가게 되고 Test에서 write()가
*      stack영역의 main영역(프레임) 위에 t.write()을 위한 영역(프레임)이 발생되고 그 안에서 실행된다
*
* 6.   프로그램 종료되며 모두 pop
*/




ex2)

    /* in Fclass..
     * public Tv objMethod(){
     * Tv t = new Tv();
     * t.brandname = "LG";
     * return t;
     * }
     *
     * in main..
     * Fclass fc = new Fclass();
     * Tv t2 = fc.objMethod();
     * sysout(t2.brandname);
     *
     * 모두 메모리 구조 그릴 수 있어야 한다
     */





Comments