Initialization Order of Member Variables

๋ฉค๋ฒ„ ๋ณ€์ˆ˜ ์ดˆ๊ธฐํ™” ์ˆœ์„œ

static ๋ณ€์ˆ˜ ์„ ์–ธ๋ถ€ -> ํ•„๋“œ ๋ณ€์ˆ˜ ์„ ์–ธ๋ถ€ -> ์ƒ์„ฑ์ž block

  • static ๋ณ€์ˆ˜ ์„ ์–ธ๋ถ€

    • Method area ์— ์˜ฌ๋ผ๊ฐ

    • ํด๋ž˜์Šค๊ฐ€ ๋กœ๋“œ๋  ๋•Œ ๋ณ€์ˆ˜๊ฐ€ ๊ฐ€์žฅ ๋จผ์ € ์ดˆ๊ธฐํ™”๋จ

  • ํ•„๋“œ ๋ณ€์ˆ˜ ์„ ์–ธ๋ถ€

    • Heap area ์— ์˜ฌ๋ผ๊ฐ

    • ๊ฐ์ฒด ์ƒ์„ฑ๋  ๋–ผ ์ƒ์„ฑ์ž block๋ณด๋‹ค ์•ž์„œ ์ดˆ๊ธฐํ™”๋จ

  • ์ƒ์„ฑ์ž block

    • Heap area ์— ์˜ฌ๋ผ๊ฐ

    • ๊ฐ์ฒด ์ƒ์„ฑ๋  ๋•Œ JVM์ด ๋‚ด๋ถ€์ ์œผ๋กœ locking ํ•„๋“œ ๋ณ€์ˆ˜ ์ค‘ finla ๋ณ€์ˆ˜์˜ ๊ฐ€์‹œํ™”๋Š” ์ƒ์„ฑ์ž block์ด ๋๋‚œ ๋‹ค์Œ ์ดˆ๊ธฐํ™” ๋จ

    • ํ•„๋“œ ๋ณ€์ˆ˜ ์„ ์–ธ๋ถ€์—์„œ ์ด๋ฏธ ์ดˆ๊ธฐํ™”๋˜์—ˆ๋‹ค๋ฉด ๊ทธ ๊ฐ’๋“ค์„ ๋ฎ์–ด์”€

์ดˆ๊ธฐํ™” ์‹œ์ 

  • ํด๋ž˜์Šค ๋ณ€์ˆ˜

    • ํด๋ž˜์Šค๊ฐ€ ์ฒ˜์Œ ๋กœ๋”ฉ๋  ๋•Œ ๋‹จ ํ•œ๋ฒˆ ์ดˆ๊ธฐํ™”

  • ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜

    • ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ๋งˆ๋‹ค ๊ฐ ์ธ์Šคํ„ฐ์Šค๋ณ„๋กœ ์ดˆ๊ธฐํ™”๊ฐ€ ์ด๋ฃจ์–ด์ง

์ดˆ๊ธฐํ™” ์ˆœ์„œ

  • ํด๋ž˜์Šค ๋ณ€์ˆ˜

    • ๊ธฐ๋ณธ๊ฐ’ -> ๋ช…์‹œ์  ์ดˆ๊ธฐํ™” -> ํด๋ž˜์Šค ์ดˆ๊ธฐํ™” ๋ธ”๋Ÿญ

  • ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜

    • ๊ธฐ๋ณธ๊ฐ’ -> ๋ช…์‹œ์  ์ดˆ๊ธฐํ™” -> ์ธ์Šคํ„ด์Šค ์ดˆ๊ธฐํ™” ๋ธ”๋Ÿญ -> ์ƒ์„ฑ์ž

Last updated