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);
*
* 모두 메모리 구조 그릴 수 있어야 한다
*/