Java Memory Area

Method Area

  • JVM์ด ์‹คํ–‰๋˜๋ฉด์„œ ์ƒ๊ธฐ๋Š” ๊ณต๊ฐ„

  • Class ์ •๋ณด, ์ „์—ญ ๋ณ€์ˆ˜ ์ •๋ณด, Static ๋ณ€์ˆ˜ ์ •๋ณด๊ฐ€ ์ €์žฅ๋˜๋Š” ๊ณต๊ฐ„

  • Runtime Constant Pool

    • ๋ง ๊ทธ๋Œ€๋กœ ์ƒ์ˆ˜๊ฐ€ ์ €์žฅ๋˜๋Š” ๊ณต๊ฐ„

  • ๋ชจ๋“  thread์—์„œ ์ •๋ณด๊ฐ€ ๊ณต์œ ๋œ๋‹ค

Heap

  • new ์—ฐ์‚ฐ์ž๋กœ ์ƒ์„ฑ๋œ ๊ฐ์ฒด, Array์™€ ๊ฐ™์ด ๋™์ ์œผ๋กœ ์ƒ์„ฑ๋œ ๊ฐ์ฒด๊ฐ€ ์ €์žฅ๋˜๋Š” ๊ณต๊ฐ„

  • Heap ์˜์—ญ์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋Š” GC๊ฐ€ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š๋Š”ํ•œ, ์†Œ๋ฉธ๋˜์ง€ ์•Š๋Š”๋‹ค

  • Reference Type ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜๋Š” ๊ณต๊ฐ„

  • ๋ชจ๋“  thread์—์„œ ์ •๋ณด๊ฐ€ ๊ณต์œ ๋œ๋‹ค

Stack

  • ์ง€์—ญ๋ณ€์ˆ˜, method์˜ ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ๊ฐ™์ด ์ž ์‹œ ์‚ฌ์šฉ๋˜๊ณ  ํ•„์š” ์—†์–ด์ง€๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜๋Š” ๊ณต๊ฐ„

  • LIFO (Last In First Out) ๊ตฌ์กฐ๋กœ, ๋‚˜์ค‘์— ๋“ค์–ด์˜จ ๋ฐ์ดํ„ฐ๊ฐ€ ๋จผ์ € ๋‚˜๊ฐ„๋‹ค

  • ๋งŒ์•ฝ ์ง€์—ญ๋ณ€์ˆ˜์ง€๋งŒ, Reference Type์ผ ๊ฒฝ์šฐ์—๋Š” Heap์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ์˜ ์ฃผ์†Œ๊ฐ’์„ Stack์— ์ €์žฅํ•ด์„œ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค

  • ๊ธฐ๋ณธํ˜• (Primitive Type) ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜๋Š” ๊ณต๊ฐ„

  • Thread๋งˆ๋‹ค ํ•˜๋‚˜์”ฉ ์กด์žฌํ•œ๋‹ค

PC Register

  • Thread๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด์„œ ์ƒ๊ธฐ๋Š” ๊ณต๊ฐ„

  • Thread๊ฐ€ ์–ด๋–ค ๋ช…๋ น์–ด๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ  ์žˆ๋Š”์ง€, ๊ทธ ์ฃผ์†Œ๋ฅผ ๋“ฑ๋กํ•œ๋‹ค

  • JVM์ด ์‹คํ–‰ํ•˜๊ณ  ์žˆ๋Š” ํ˜„์žฌ ์œ„์น˜๋ฅผ ์ €์žฅํ•˜๋Š” ์—ญํ• 

Native Method Stack

  • Java๊ฐ€ ์•„๋‹Œ ์–ธ์–ด (C, C++) ๋กœ ๊ตฌ์„ฑ๋œ method์˜ ์‹คํ–‰์ด ํ•„์š”ํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ๊ณต๊ฐ„

Last updated

Was this helpful?