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