
JVM ๊ตฌ์กฐ
Stack๊ณผ Queue๋ ํ๋ก๊ทธ๋จ ๋ด์์ ์คํ๋ ๋ ์ ๊น ์๊ฒผ๋ค๊ฐ ์ฌ๋ผ์ง๋ค.
Stack์ ์์ ์ ์ฅ์์ด๊ณ
Queue๋ ์คํ๋ ๋ชฉ๋ก์ ๋๊ธฐ์ํค๋ ๊ณต๊ฐ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค.
package ex04.test;
public class ScopeEx01 {
int n1 = 1;// heap
static int n2 = 2; //static
static void m8() {
int n8 = 8;
}
static void m1() {
// int n1 = 10;//stack
// System.out.println("m1: " + n1); // ์์ int n1 = 10; ์ด ์๋ค๋ฉด ์๋ฌด ๊ฒ๋ ํ๋ฉด์ ๋ณด์ฌ์ค ์ ์๋ค. 5ํ์ int n1 = 1;์ static์ ์ฌ๋ผ์ ์์ง ์๊ธฐ ๋๋ฌธ์ด๋ค.
System.out.println();
}
void m2() {
System.out.println("m2: " + n1);
System.out.println("์ด๊ฑฐ ๋๋? " + n2);
}
// ๋ฉ์ธ ์์ ์ ์ static์ ๋ณ์ n2์ ๋ฉ์๋ m1์ด ๋ก๋๋์ด ์์.
public static void main(String[] args) {
System.out.println(1);
m1(); // return์ด ์์ผ๋ฉด ์ฌ๊ธฐ๋ก ์ค๊ณ , ์์ผ๋ฉด ๋ค์ ์ค๋ก ๊ฐ๋ค.
System.out.println(2);
ScopeEx01 sc = new ScopeEx01(); // static์ด ๋ถ์ด ์์ง ์์ ๋ชจ๋ ๊ฒ์ด ๋ธ. ๊ทธ๋ฅ ๋จ๋ ๊ณต๊ฐ ์ฐพ์์ ๋ธ. // main stack์ ๋ฌ sc๋ heap์ ์ฃผ์.(์ฐธ์กฐ ๋ณ์)
System.out.println(sc.n1);
sc.m2();
// heap๊ณผ static์ ๋ ์๊ธฐ๋ง ํ๋ค๋ฉด ์ด๋์๋ ์ฐพ์ ์ ์์ด. ์ด์ฐจํผ ์ด๋ฆ์ ์ค๋ณต๋์ง ์์ํ
๋๊น.
}
}

์ง์ญ๋ณ์๋ stack์ ๋ฌ๋ค. ์คํ์์๋ง ์๊ฒผ๋ค ์ฌ๋ผ์ง๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ๊ณณ์์ ์ฐพ์ ์๊ฐ ์๋ค.
์ฐพ๊ณ ์ถ๋ค๋ฉด return์ ํ๋ฉด ๋๋ค.
static (n2=2, m1(), main) -> ํด๋์ค๋ช
.์ฐพ๋๊ฒ์์ด๋ฆ
-> ํด๋์ค๋ช
์ ํตํด ์ ๊ทผ(์ด๋์์๋ ์ง ์ ๊ทผ ๊ฐ๋ฅํ๋ค)
heap (n1=1, m2() -> static์ด ์๋ ๋ชจ๋ ๊ฒ)
-> ๋ ํผ๋ฐ์ค ์ฃผ์๋ฅผ ํตํด ์ ๊ทผ(heap ๋ผ๋ฆฌ๋ ๊ฐ์ scope์ด๊ธฐ ๋๋ฌธ์ ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค. )
stack (n5=10)
-> ๊ฐ์ ์คํ์์๋ง ์ ๊ทผ(์ธ๋ถ์์ ์ ๊ทผ ๋ถ๊ฐ๋ฅ)
Share article