Search
Duplicate
๐Ÿชข

jvm

JVM ์— ๋Œ€ํ•ด์„œ

โ€ข
์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ํ™˜๊ฒฝ์„ ๋งŒ๋“ค์–ด ์ฃผ๋Š” ์†Œํ”„ํŠธ์›จ์–ด
โ€ข
์ž๋ฐ” ์ฝ”๋“œ๋ฅผ ์ปดํŒŒ์ผํ•˜์—ฌ .class ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋กœ ๋งŒ๋“ค๋ฉด ์ด ์ฝ”๋“œ๊ฐ€ ์ž๋ฐ” ๊ฐ€์ƒ ๋จธ์‹  ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰
โ€ข
Java๋Š” ํ”Œ๋žซํผ์— ์ข…์†์ ์ด์ง€ ์•Š์ง€๋งŒ JVM์€ ํ”Œ๋žซํผ์— ์ข…์†์ 
โ€ข
interpreter ๋ฐฉ์‹ JIT ๋ฐฉ์‹ ํ˜ผ์šฉ
โ—ฆ
interpreter ๋ฐฉ์‹: ํ•œ ์ค„์”ฉ ํ•ด์„, ์‹คํ–‰
โ—ฆ
JIT ๋ฐฉ์‹:
โ–ช
๋ฐ”์ดํŠธ์ฝ”๋“œ๋ฅผ JIT ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ์ด์šฉํ•ด ํ”„๋กœ๊ทธ๋žจ์„ ์‹ค์ œ ์‹คํ–‰ํ•˜๋Š” ์‹œ์ (๋ฐ”์ดํŠธ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์‹œ์ )์— ๊ฐ OS์— ๋งž๋Š” Native Code๋กœ ๋ณ€ํ™˜
โ–ช
JIT ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ๋งค๋ฒˆ ํ•ด์„ํ•˜์ง€ ์•Š๊ณ , ์‹คํ–‰ํ•  ๋•Œ ์ปดํŒŒ์ผ์„ ํ•˜๋ฉด์„œ ํ•ด๋‹น ์ฝ”๋“œ๋ฅผ ์บ์‹ฑํ•ด๋ฒ„๋ฆฝ๋‹ˆ๋‹ค. ์ดํ›„์—๋Š” ๋ฐ”๋€ ๋ถ€๋ถ„๋งŒ ์ปดํŒŒ์ผํ•˜๊ณ , ๋‚˜๋จธ์ง€๋Š” ์บ์‹ฑ๋œ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉ

JVM ๋™์ž‘ ๋ฐฉ์‹

1.
์ž๋ฐ”๋กœ ๊ฐœ๋ฐœ๋œ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋ฉด JVM์€ OS๋กœ๋ถ€ํ„ฐ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค.
2.
์ž๋ฐ” ์ปดํŒŒ์ผ๋Ÿฌ(javac)๊ฐ€ ์ž๋ฐ” ์†Œ์Šค์ฝ”๋“œ(.java)๋ฅผ ์ž๋ฐ” ๋ฐ”์ดํŠธ์ฝ”๋“œ(.class)๋กœ ์ปดํŒŒ์ผํ•ฉ๋‹ˆ๋‹ค.
3.
Class Loader๋ฅผ ํ†ตํ•ด JVM Runtime Data Area๋กœ ๋กœ๋”ฉํ•ฉ๋‹ˆ๋‹ค.
4.
Runtime Data Area์— ๋กœ๋”ฉ ๋œ .class๋“ค์€ Execution Engine์„ ํ†ตํ•ด ํ•ด์„ํ•ฉ๋‹ˆ๋‹ค.
5.
ํ•ด์„๋œ ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋Š” Runtime Data Area์˜ ๊ฐ ์˜์—ญ์— ๋ฐฐ์น˜๋˜์–ด ์ˆ˜ํ–‰ํ•˜๋ฉฐ ์ด ๊ณผ์ •์—์„œ Execution Engine์— ์˜ํ•ด GC์˜ ์ž‘๋™๊ณผ ์Šค๋ ˆ๋“œ ๋™๊ธฐํ™”๊ฐ€ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.

JVM ๋‚ด๋ถ€ ๊ตฌ์กฐ

โ€ข
ํด๋ž˜์Šค ๋กœ๋”(Class Loader)
โ—ฆ
ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰ ์ค‘์ธ ๋Ÿฐํƒ€์ž„์—์„œ์•ผ ๋ชจ๋“  ์ฝ”๋“œ๊ฐ€ ์ž๋ฐ” ๊ฐ€์ƒ ๋จธ์‹ ๊ณผ ์—ฐ๊ฒฐ
โ—ฆ
๋™์ ์œผ๋กœ ํด๋ž˜์Šค๋ฅผ ๋กœ๋”ฉํ•ด์ฃผ๋Š” ์—ญํ• ์„ ํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋กœ ํด๋ž˜์Šค ๋กœ๋”(class loader)
โ—ฆ
JVM์ด ์šด์˜์ฒด์ œ๋กœ๋ถ€ํ„ฐ ํ• ๋‹น๋ฐ›์€ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์ธ Runtime Data Areas์˜ Method Area์— ๋ฐฐ์น˜
โ€ข
์‹คํ–‰ ์—”์ง„(Execution Engine)
โ—ฆ
๋กœ๋“œ๋œ ๋ฐ”์ดํŠธ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋Ÿฐํƒ€์ž„ ๋ชจ๋“ˆ์ด ์‹คํ–‰ ์—”์ง„
โ€ข
๋Ÿฐํƒ€์ž„ ๋ฐ์ดํ„ฐ ์˜์—ญ (Runtime Data Area)
โ—ฆ
JVM์˜ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์œผ๋กœ ์ž๋ฐ” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ๋“ค์„ ์ ์žฌํ•˜๋Š” ์˜์—ญ
โ€ข
๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ(Garbage Collector)
โ—ฆ
๋”๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ž๋™์œผ๋กœ ํšŒ์ˆ˜
โ—ฆ
๋”ฐ๋ผ์„œ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋”ฐ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•˜์ง€ ์•Š์•„๋„ ๋˜๋ฏ€๋กœ, ๋”์šฑ ์†์‰ฝ๊ฒŒ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•๋Š”๋‹ค.
โ—ฆ
Heap ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ์ƒ์„ฑ(์ ์žฌ)๋œ ๊ฐ์ฒด๋“ค ์ค‘์— ์ฐธ์กฐ๋˜์ง€ ์•Š์€ ๊ฐ์ฒด๋“ค์„ ํƒ์ƒ‰ ํ›„ ์ œ๊ฑฐํ•˜๋Š” ์—ญํ• ์„ ํ•˜๋ฉฐ ํ•ด๋‹น ์—ญํ• ์„ ํ•˜๋Š” ์‹œ๊ฐ„์€ ์ •ํ™•ํžˆ ์–ธ์ œ์ธ์ง€๋ฅผ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
โ—ฆ
GC์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์Šค๋ ˆ๋“œ๋ฅผ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ๋ชจ๋“  ์Šค๋ ˆ๋“œ๋“ค์€ ์ผ์‹œ์ •์ง€์ƒํƒœ

JVM ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ

โ€ข
ํž™ ์˜์—ญ, ๋ฉ”์„œ๋“œ ์˜์—ญ์€ ๋ชจ๋“  ์Šค๋ ˆ๋“œ๊ฐ€ ๊ณต์œ ํ•ด์„œ ์‚ฌ์šฉ
๋ฉ”์„œ๋“œ ์˜์—ญ(Method Area)
โ€ข
ํด๋ž˜์Šค ๋ฉค๋ฒ„ ๋ณ€์ˆ˜์˜ ์ด๋ฆ„, ๋ฐ์ดํ„ฐ ํƒ€์ž…, ์ ‘๊ทผ ์ œ์–ด์ž ์ •๋ณด์™€ ๊ฐ™์€ ๊ฐ์ข… ํ•„๋“œ ์ •๋ณด
โ€ข
๋ฉ”์„œ๋“œ ์ •๋ณด, ๋ฐ์ดํ„ฐ Type ์ •๋ณด, Constant Pool, static๋ณ€์ˆ˜, final class ๋“ฑ์ด ์ƒ์„ฑ๋˜๋Š” ์˜์—ญ
ํž™ ์˜์—ญ (Heap Area)
โ€ข
new ํ‚ค์›Œ๋“œ๋กœ ์ƒ์„ฑ๋œ ๊ฐ์ฒด์™€ ๋ฐฐ์—ด์ด ์ƒ์„ฑ๋˜๋Š” ์˜์—ญ
โ€ข
์ฃผ๊ธฐ์ ์œผ๋กœ GC๊ฐ€ ์ œ๊ฑฐํ•˜๋Š” ์˜์—ญ
โ€ข
์Šคํƒ ์˜์—ญ, PC ๋ ˆ์ง€์Šคํ„ฐ, ๋„ค์ดํ‹ฐ๋ธŒ ๋ฉ”์„œ๋“œ ์Šคํƒ ๋ชจ๋“  ์Šค๋ ˆ๋“œ๊ฐ€ ๊ณต์œ ํ•ด์„œ ์‚ฌ์šฉ (GC์˜ ๋Œ€์ƒ)
์Šคํƒ ์˜์—ญ(Stack Area)
โ€ข
์ง€์—ญ๋ณ€์ˆ˜, ํŒŒ๋ผ๋ฏธํ„ฐ, ๋ฆฌํ„ด ๊ฐ’, ์—ฐ์‚ฐ์— ์‚ฌ์šฉ๋˜๋Š” ์ž„์‹œ ๊ฐ’ ๋“ฑ์ด ์ƒ์„ฑ๋˜๋Š” ์˜์—ญ
PC ๋ ˆ์ง€์Šคํ„ฐ (PC Register)
โ€ข
Thread๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ๋งˆ๋‹ค ์ƒ์„ฑ๋˜๋Š” ์˜์—ญ์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ, ์ฆ‰ ํ˜„์žฌ ์Šค๋ ˆ๋“œ๊ฐ€ ์‹คํ–‰๋˜๋Š” ๋ถ€๋ถ„์˜ ์ฃผ์†Œ์™€ ๋ช…๋ น์„ ์ €์žฅํ•˜๊ณ  ์žˆ๋Š” ์˜์—ญ
๋„ค์ดํ‹ฐ๋ธŒ ๋ฉ”์„œ๋“œ ์Šคํƒ(Native Method Stack)
1.
์ž๋ฐ” ์ด์™ธ์˜ ์–ธ์–ด(C, C++, ์–ด์…ˆ๋ธ”๋ฆฌ ๋“ฑ)๋กœ ์ž‘์„ฑ๋œ ๋„ค์ดํ‹ฐ๋ธŒ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์œผ๋กœ ์ผ๋ฐ˜์ ์ธ C ์Šคํƒ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
2.
๋ณดํ†ต C/C++ ๋“ฑ์˜ ์ฝ”๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์Šคํƒ์„ ๋งํ•˜๋ฉฐ (JNI) ์ž๋ฐ” ์ปดํŒŒ์ผ๋Ÿฌ์— ์˜ํ•ด ๋ณ€ํ™˜๋œ ์ž๋ฐ” ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋ฅผ ์ฝ๊ณ  ํ•ด์„ํ•˜๋Š” ์—ญํ• ์„ ํ•˜๋Š” ๊ฒƒ์ด ์ž๋ฐ” ์ธํ„ฐํ”„๋ฆฌํ„ฐ(interpreter)

๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ

โ€ข
์ž๋ฐ”์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๋ฐฉ๋ฒ• ์ค‘์˜ ํ•˜๋‚˜๋กœ JVM์˜ Heap ์˜์—ญ์—์„œ ๋™์ ์œผ๋กœ ํ• ๋‹นํ–ˆ๋˜ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ ์ค‘ ํ•„์š” ์—†๊ฒŒ ๋œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ์ฃผ๊ธฐ์ ์œผ๋กœ ์‚ญ์ œํ•˜๋Š” ํ”„๋กœ์„ธ์Šค
โ€ข
์ฐธ์กฐ๊ฐ€ ํ•ด์ œ๋œ ๊ฐ์ฒด(unreachable)๊ฐ€ GC ๋Œ€์ƒ

์žฅ์ 

โ€ข
๊ฐœ๋ฐœ์ž ์ž…์žฅ์—์„œ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ, ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜(Memory Leak) ๋ฌธ์ œ์—์„œ ๋Œ€ํ•ด ์™„๋ฒฝํ•˜๊ฒŒ ๊ด€๋ฆฌํ•˜์ง€ ์•Š์•„๋„ ๋˜์–ด ์˜ค๋กฏ์ด ๊ฐœ๋ฐœ์—๋งŒ ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ 

๋‹จ์ 

โ€ข
๊ฐœ๋ฐœ์ž๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์–ธ์ œ ํ•ด์ œ๋˜๋Š”์ง€ ์ •ํ™•ํ•˜๊ฒŒ ์•Œ ์ˆ˜ ์—†๋‹ค.
โ€ข
๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜(GC)์ด ๋™์ž‘ํ•˜๋Š” ๋™์•ˆ์—๋Š” ๋‹ค๋ฅธ ๋™์ž‘์„ ๋ฉˆ์ถ”๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

Mark and Sweep ์•Œ๊ณ ๋ฆฌ์ฆ˜

โ€ข
Mark ๊ณผ์ • : ๋จผ์ € Root๋กœ๋ถ€ํ„ฐ ๊ทธ๋ž˜ํ”„ ์ˆœํšŒ๋ฅผ ํ†ตํ•ด ์—ฐ๊ฒฐ๋œ ๊ฐ์ฒด๋“ค์„ ์ฐพ์•„๋‚ด์–ด ๊ฐ๊ฐ ์–ด๋–ค ๊ฐ์ฒด๋ฅผ ์ž ์กฐํ•˜๊ณ  ์žˆ๋Š”์ง€ ์ฐพ์•„์„œ ๋งˆํ‚นํ•ฉ๋‹ˆ๋‹ค.
โ€ข
Sweep ๊ณผ์ • : ์ฐธ์กฐํ•˜๊ณ  ์žˆ์ง€ ์•Š์€ ๊ฐ์ฒด ์ฆ‰ Unreachable ๊ฐ์ฒด๋“ค์„ Heap์—์„œ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
โ€ข
Compact ๊ณผ์ • : Sweep ํ›„์— ๋ถ„์‚ฐ๋œ ๊ฐ์ฒด๋“ค์„ Heap์˜ ์‹œ์ž‘ ์ฃผ์†Œ๋กœ ๋ชจ์•„ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ• ๋‹น๋œ ๋ถ€๋ถ„๊ณผ ๊ทธ๋ ‡์ง€ ์•Š์€ ๋ถ€๋ถ„์œผ๋กœ ์••์ถ•ํ•ฉ๋‹ˆ๋‹ค. (๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ ์ข…๋ฅ˜์— ๋”ฐ๋ผ ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์Œ)

GC ๋™์ž‘ ๊ณผ์ •

1.
๊ฐ์ฒด๊ฐ€ ์ฒ˜์Œ ์ƒ์„ฑ๋˜๊ณ  Heap์˜์—ญ์˜ Eden์— age-bit 0์œผ๋กœ ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค. ์ด age-bit๋Š” Minor GC์—์„œ ์‚ด์•„๋‚จ์„ ๋•Œ๋งˆ๋‹ค 1์”ฉ ์ฆ๊ฐ€
2.
์‹œ๊ฐ„์ด ์ง€๋‚˜ Heap Area์˜ Eden ์˜์—ญ์— ๊ฐ์ฒด๊ฐ€ ๋‹ค ์Œ“์ด๊ฒŒ ๋˜๋ฉด Minor GC๊ฐ€ ํ•œ๋ฒˆ ์ผ์–ด๋‚˜๊ฒŒ ๋˜๊ณ  ์ฐธ์กฐ ์ •๋„์— ๋”ฐ๋ผ Servivor0 ์˜์—ญ์œผ๋กœ ์ด๋™ํ•˜๊ฑฐ๋‚˜ ํšŒ์ˆ˜
3.
๊ณ„์†ํ•ด์„œ Eden์˜์—ญ์—๋Š” ์‹ ๊ทœ ๊ฐ์ฒด๋“ค์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ๋˜ Eden์˜์—ญ์— ๊ฐ์ฒด๊ฐ€ ๋‹ค ์Œ“์ด๊ฒŒ ๋˜๋ฉด Young Generation(Eden+Servivor) ์˜์—ญ์— ์žˆ๋Š” ๊ฐ์ฒด๋“ค์„ ๋น„์–ด์žˆ๋Š” Survival์ธ Survival1 ์˜์—ญ์— ์ด๋™ํ•˜๊ณ  ์‚ด์•„๋‚จ์€ ๋ชจ๋“  ๊ฐ์ฒด๋“ค์€ age๊ฐ€ 1์”ฉ ์ฆ๊ฐ€
4.
๋˜๋‹ค์‹œ Eden ์˜์—ญ์— ์‹ ๊ทœ ๊ฐ์ฒด๋“ค๋กœ ๊ฐ€๋“ ์ฐจ๊ฒŒ ๋˜๋ฉด ๋‹ค์‹œํ•œ๋ฒˆ minor GC๊ฐ€ ์ผ์–ด๋‚˜๊ณ  Young Generation(Eden+Servivor) ์˜์—ญ์— ์žˆ๋Š” ๊ฐ์ฒด๋“ค์„ ๋น„์–ด์žˆ๋Š” Survival์ธ Survival0์œผ๋กœ ์ด๋™์‹œํ‚จ ๋’ค age๋ฅผ 1 ์ฆ๊ฐ€์‹œํ‚ต๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์„ ๊ณ„์† ๋ฐ˜๋ณต
5.
์œ„ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜๋‹ค ๋ณด๋ฉด age bit๊ฐ€ ํŠน์ • ์ˆซ์ž ์ด์ƒ์œผ๋กœ ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ JVM์—์„œ ์„ค์ •ํ•ด๋†“์€ age bit์— ๋„๋‹ฌํ•˜๊ฒŒ ๋˜๋ฉด ์˜ค๋žซ๋™์•ˆ ์“ฐ์ผ ๊ฐ์ฒด๋ผ๊ณ  ํŒ๋‹จํ•˜๊ณ  Old generation ์˜์—ญ์œผ๋กœ ์ด๋™์‹œํ‚ต๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์„ ํ”„๋กœ๋ชจ์…˜(Promotion)
6.
์‹œ๊ฐ„์ด ์ง€๋‚˜ Old์˜์—ญ์— ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ—ˆ์šฉ์น˜๋ฅผ ๋„˜๊ฒŒ ๋˜๋ฉด, Old ์˜์—ญ์— ์žˆ๋Š” ๋ชจ๋“  ๊ฐ์ฒด๋“ค์„ ๊ฒ€์‚ฌํ•˜์—ฌ ์ฐธ์กฐ๋˜์ง€ ์•Š๋Š” ๊ฐ์ฒด๋“ค์„ ํ•œ๊บผ๋ฒˆ์— ์‚ญ์ œํ•˜๋Š” GC๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ Old generation์˜์—ญ์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํšŒ์ˆ˜ํ•˜๋Š” GC๋ฅผ Major GC๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. Major GC๋Š” ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ์ž‘์—…์ด๊ณ  ์ด๋•Œ GC๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์Šค๋ ˆ๋“œ๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ์Šค๋ ˆ๋“œ๋Š” ์ž‘์—…์„ ๋ฉˆ์ถ”๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ 'Stop-the-World'

Heap Area

Young Generation ์˜์—ญ
โ€ข
์ž๋ฐ” ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋˜์ž๋งˆ์ž ์ €์žฅ๋˜๊ณ , ์ƒ๊ธด์ง€ ์–ผ๋งˆ ์•ˆ๋˜๋Š” ๊ฐ์ฒด๊ฐ€ ์ €์žฅ๋˜๋Š” ๊ณต๊ฐ„
โ€ข
Heap ์˜์—ญ์— ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด ์ตœ์ดˆ๋กœ Eden ์˜์—ญ์— ํ• ๋‹น
โ€ข
์ด ์˜์—ญ์— ๋ฐ์ดํ„ฐ๊ฐ€ ์–ด๋Š์ •๋„ ์Œ“์ด๊ฒŒ ๋˜๋ฉด ์ฐธ์กฐ์ •๋„์— ๋”ฐ๋ผ Servivor์˜ ๋นˆ ๊ณต๊ฐ„์œผ๋กœ ์ด๋™๋˜๊ฑฐ๋‚˜ ํšŒ์ˆ˜
โ€ข
Young Generation(Eden+Servivor) ์˜์—ญ์ด ์ฐจ๊ฒŒ ๋˜๋ฉด ๋˜ ์ฐธ์กฐ์ •๋„์— ๋”ฐ๋ผ Old์˜์—ญ์œผ๋กœ ์ด๋™ ๋˜๊ฒŒ ๋˜๊ฑฐ๋‚˜ ํšŒ์ˆ˜
โ€ข
์ด๋ ‡๊ฒŒ Young Generation๊ณผ Tenured Generation ์—์„œ์˜ GC๋ฅผ Minor GC
โ€ข
Old์˜์—ญ์— ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ—ˆ์šฉ์น˜๋ฅผ ๋„˜๊ฒŒ ๋˜๋ฉด, Old ์˜์—ญ์— ์žˆ๋Š” ๋ชจ๋“  ๊ฐ์ฒด๋“ค์„ ๊ฒ€์‚ฌํ•˜์—ฌ ์ฐธ์กฐ๋˜์ง€ ์•Š๋Š” ๊ฐ์ฒด๋“ค์„ ํ•œ๊บผ๋ฒˆ์— ์‚ญ์ œํ•˜๋Š” GC๊ฐ€ ์‹คํ–‰
โ€ข
์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ์ž‘์—…์ด๊ณ  ์ด ๋•Œ GC๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์“ฐ๋ ˆ๋“œ๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ์Šค๋ ˆ๋“œ๋Š” ์ž‘์—…์„ ๋ฉˆ์ถค. ์ด๋ฅผ 'Stop-the-World'
โ€ข
๊ทธ๋ฆฌ๊ณ  ์ด๋ ‡๊ฒŒ 'Stop-the-World'๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ  Old์˜์—ญ์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํšŒ์ˆ˜ํ•˜๋Š” GC๋ฅผ Major GC

์ฐธ๊ณ  ์ž๋ฃŒ