๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Language/Java

[Java] Java GC ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ธฐ

by jaee_ 2021. 10. 15.
โœ‹๐Ÿป ๋“ค์–ด๊ฐ€๋ฉฐ.. 
 ๊ธฐ์กด์—๋Š” ์ฑ… ๋‚ด์šฉ์„ ๊ทธ๋Œ€๋กœ ์ž‘์„ฑํ•˜๊ณ (๊ฑฐ์˜ ํ•„์‚ฌ์ˆ˜์ค€,,) ๋‚˜ ์ž์‹ ์ด ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋ธ”๋กœ๊ทธ ๊ธ€์„ ์ž‘์„ฑํ–ˆ๋‹ค๋ฉด,  ์ด์ œ๋Š” ๋‚จ์—๊ฒŒ ์„ค๋ช…ํ•˜๋“ฏ์ด ๋ธ”๋กœ๊ทธ ๊ธ€์„ ์ž‘์„ฑํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค. ์ด์ „ ๊ธ€๋“ค๊ณผ ์„œ์ˆ  ๋ฐฉ์‹์ด ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

GC๋ž€

 

์šฐ๋ฆฌ๋Š” Java ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๋ฉด์„œ new๋ผ๋Š” ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด ๋•Œ new๊ฐ€ ๋ถ™์€ ๊ฐ์ฒด๋Š” Heap ์˜์—ญ์— ๋™์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•ด์ค๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ๋™์ ์œผ๋กœ ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ๋Š” ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ํ•ด์ œ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ•ด์ œํ•˜์ง€ ์•Š์œผ๋ฉด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ณ„์†ํ•ด์„œ ์ ์œ ํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ OutOfMemmory Exception ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ๋™์ ์œผ๋กœ ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ•ด์ œํ•ด์ฃผ๋Š” ์ž‘์—…์„ ํ•˜๋Š” ๊ฒƒ์ด GC์ž…๋‹ˆ๋‹ค. ์ •๋ฆฌํ•˜์ž๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

GC๋ž€ Garbage Collection(์ดํ•˜ GC)์˜ ์•ฝ์ž๋กœ ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”(์“ฐ๋ ˆ๊ธฐ) ๊ฐ์ฒด๋ฅผ ์ฐพ์•„ ์ง€์šฐ๋Š” ์ž‘์—…์„ ํ•œ๋‹ค.

 

Java๋Š” GC๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ž๋™์œผ๋กœ ๊ด€๋ฆฌํ•ด์ค๋‹ˆ๋‹ค. ๋งŒ์•ฝ GC๊ฐ€ ์—†์—ˆ๋‹ค๋ฉด ๊ฐœ๋ฐœ์ž๊ฐ€ ์ˆ˜๋™์œผ๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฒดํฌํ•˜๊ณ  ๋ฐ˜ํ™˜ํ•˜๋Š” ์ผ์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ƒ๊ฐ๋งŒ ํ•ด๋„ ๋ฒˆ๊ฑฐ๋กญ์Šต๋‹ˆ๋‹ค. ์ž๋™์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค๋Š” ๊ฒƒ์ด ์–ด๋–ค ๊ด€์ ์—์„œ ๋ณด๋ฉด ๋น„ํšจ์œจ์ ์ด์–ด ๋ณด์ผ ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ๊ฐœ๋ฐœ์ž ์ž…์žฅ์—์„  ๊ฐœ๋ฐœ์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์„ ๋งŒ๋“ค์–ด ์ค€๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ’ก Java์—์„œ๋„ GC๋ฅผ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ System.gc() ๋ฉ”์†Œ๋“œ ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํ•ด๋‹น ๋ฉ”์†Œ๋“œ๋Š” ์‹œ์Šคํ…œ์˜ ์„ฑ๋Šฅ์— ํฐ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋ฏ€๋กœ ์ ˆ๋Œ€ ํ˜ธ์ถœํ•ด์„œ๋Š” ์•ˆ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ƒฅ GC๊ฐ€ ์•Œ์•„์„œ ๋™์ž‘ํ•˜๋„๋ก ๋†”๋‘๋Š” ๊ฒƒ์ด ์ œ์ผ ๋ฒ ์ŠคํŠธ์ž…๋‹ˆ๋‹ค.

Stop-the-world


stop-the-world๋ž€, GC๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด JVM์ด ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์‹คํ–‰์„ ๋ฉˆ์ถ”๋Š” ๊ฒƒ ์ž…๋‹ˆ๋‹ค. GC๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ์“ฐ๋ ˆ๋“œ๊ฐ€ ์ผ์‹œ์ ์œผ๋กœ ์ •์ง€๋˜๋ฉฐ, GC๊ฐ€ ๋๋‚œ ๋’ค์—์•ผ ์ •์ง€๋๋˜ ์“ฐ๋ ˆ๋“œ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

์–ด๋– ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ GC๋ฅผ ์ˆ˜ํ–‰ํ•˜๋“  Stop-and-world ์ƒํƒœ๋ฅผ ๋งž์ดํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. GC ํŠœ๋‹์ด๋ผํ•˜๋ฉด ์ด์™€ ๊ฐ™์€ ์“ฐ๋ ˆ๋“œ์˜ ์ž‘์—…์ด ๋ฉˆ์ถ”๋Š” ์‹œ๊ฐ„(Stop-and-world)์„ ์ตœ์†Œํ•œ์œผ๋กœ ์ค„์ด๋Š” ๊ฒƒ์ด๋ผ๊ณ  ๋ณด๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 


Reachability

 

Java ์˜ GC๋Š” Reachability ์˜ ๊ฐœ๋…์„ ์•Œ์•„์•ผํ•ฉ๋‹ˆ๋‹ค. ์–ด๋– ํ•œ ๊ฐ์ฒด์— ์œ ํšจํ•œ ์ฐธ์กฐ๊ฐ€ ์žˆ๋‹ค๋ฉด reachable ์ด๋ผํ•˜๊ณ , ์œ ํšจํ•œ ์ฐธ์กฐ๊ฐ€ ์—†๋‹ค๋ฉด unreachable์ด๋ผ ํ•ฉ๋‹ˆ๋‹ค.

GC์—๋Š” GC root๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. GC root๋Š” ๋ง ๊ทธ๋Œ€๋กœ GC์˜ ๋ฟŒ๋ฆฌ๋ผ๊ณ  ์ดํ•ดํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

โœ” GC root๊ฐ€ ๋˜๋Š” ์กฐ๊ฑด
1. stack ์˜์—ญ์˜ ๋ฐ์ดํ„ฐ(์ง€์—ญ๋ณ€์ˆ˜, ํŒŒ๋ผ๋ฏธํ„ฐ ๋“ฑ)
2. method ์˜์—ญ์˜ static ๋ฐ์ดํ„ฐ
3. ์‹คํ–‰์ค‘์ธ ์“ฐ๋ ˆ๋“œ
4. JNI (Java Native Interface)์— ์˜ํ•ด ์ƒ์„ฑ๋œ ๊ฐ์ฒด

image

์œ„์˜ ์‚ฌ์ง„์—์„œ ๋ณด์ด๋Š” ๊ฒƒ ์ฒ˜๋Ÿผ GC Root์™€ ์—ฐ๊ฒฐ๋œ ๊ฐ์ฒด๋Š” reachable ๊ทธ ์™ธ๋Š” unreachable ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜์˜ ๊ทธ๋ฆผ์„ ํ†ตํ•ด ์ดํ•ด๋ฅผ ๋„์™€๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

image

 

์œ„์˜ ์‚ฌ์ง„์—์„œ 1,3,4,5 ๋Š” reachableํ•œ ์ƒํƒœ์ž…๋‹ˆ๋‹ค.

  • 1,5 ๋Š” Stack ์˜์—ญ์— ์žˆ๋Š” 6, 7์„ ์ฐธ์กฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  • 3 ์€ Method Area ์˜์—ญ์— ์žˆ๋Š” 8์„ ์ฐธ์กฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  • 4 ๋Š” 7์„ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋Š” 5๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

unreachable ํ•œ 2 ๋Š” ์•„๋ฌด๊ฒƒ๋„ ์ฐธ์กฐํ•˜๊ณ  ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ฆ‰, GC์˜ ์ˆ˜๊ฑฐ ๋Œ€์ƒ์ด ๋ฉ๋‹ˆ๋‹ค.


๐Ÿคท‍โ™‚๏ธ ๊ทธ๋Ÿผ GC์˜ ์–ด๋–ค ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ์˜ํ•ด ๋™์ž‘ํ•˜์ง€?

 

๋ฐ”๋กœ Mark and Sweep ์ด๋ผ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

GC root์—์„œ ์‹œ์ž‘ํ•˜์—ฌ root๊ฐ€ ์ฐธ์กฐํ•˜๋Š” ๋ชจ๋“  ๊ฐ์ฒด ๋˜๋Š” ๊ทธ ๊ฐ์ฒด๋“ค์ด ์ฐธ์กฐํ•˜๋Š” ๋‹ค๋ฅธ ๊ฐ์ฒด๋“ค์„ ํƒ์ƒ‰ํ•˜๋ฉฐ ๋งˆํฌ(Mark)ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์ด Mark and Sweep ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ Mark์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

image



[์ฐธ์กฐ๋œ ๊ฐœ์ฒด : ํŒŒ๋ž€์ƒ‰ / ์ฐธ์กฐ๋˜์ง€ ์•Š์€ ๊ฐœ์ฒด : ๋…ธ๋ž€์ƒ‰]

Mark๊ฐ€ ๋๋‚˜๋ฉด GC๋Š” ๋งˆํฌ(Mark)๋˜์ง€ ์•Š์€ ๋ฉ”๋ชจ๋ฆฌ๋“ค์„ ํ•ด์ œํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์„ Sweep์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

image



[์ฐธ์กฐ๋˜๊ณ  ์žˆ์ง€ ์•Š์€ ๊ฐœ์ฒด๋ฅผ ์‚ญ์ œ ํ•œ ํ›„์˜ ๊ทธ๋ฆผ์ž…๋‹ˆ๋‹ค. ]

Mark and Sweep ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ compact ๋ผ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. compact๋Š” Mark and Sweep ๊ณผ์ •์„ ๊ฑฐ์น˜๊ณ  ๋‚˜๋ฉด Mark ๋˜์ง€ ์•Š์€ ๊ฐ์ฒด๋“ค๋งŒ ๋‚จ์•„์žˆ์„ ๊ฒƒ ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๊ฐ์ฒด๋“ค์ด ๋“ฌ์„ฑ๋“ฌ์„ฑ ์กด์žฌํ•˜๊ฒ ์ฃ ? ์ด๋Ÿฌํ•œ ๊ฐ์ฒด๋“ค์„ ์••์ถ•, ์ฆ‰ ํ•œ ๊ณณ์œผ๋กœ ๋ชจ์•„์„œ ๋ฉ”๋ชจ๋ฆฌ ๋‹จํŽธํ™”๋ฅผ ๋ง‰์Šต๋‹ˆ๋‹ค. compact ๊ณผ์ •์„ ํ†ตํ•ด ์ƒˆ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์ด ์‰ฝ๊ณ , ๋นจ๋ผ์ง€๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

image


[Sweep ๊ณผ์ • ํ›„ ๋“ฌ์„ฑ๋“ฌ์„ฑ ์กด์žฌํ•˜๋Š” ์ฐธ์กฐ๋œ ๊ฐœ์ฒด ์••์ถ•ํ•œ ๋ชจ์Šต]


๐Ÿ” ๊ทธ๋ž˜์„œ ์ € ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์–ธ์ œ ๋™์ž‘ํ•˜๋Š”๋ฐ?

 

GC๋Š” Heap ์˜์—ญ์— ๋™์ ์œผ๋กœ ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ ์ค‘ ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ž๋™์œผ๋กœ ํ•ด์ œํ•ด์ค€๋‹ค๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค.

Heap ์˜์—ญ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋„๋ก ํ•˜์ฃ . Heap ์˜์—ญ์€ ์•„๋ž˜์˜ ์‚ฌ์ง„๊ณผ ๊ฐ™์ด ๋‚˜๋‰ฉ๋‹ˆ๋‹ค.

image

  • Young Generation : ์ Š์€ ๊ฐ์ฒด
    • eden : ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์ž๋งˆ์ž ์ €์žฅ๋˜๋Š” ์žฅ์†Œ
    • Survivor Space 0 : ๊ฐ์‹œ์ž 0
    • Survivor Space 1 : ๊ฐ์‹œ์ž 2
  • Old Generation : ์˜ค๋ž˜๋œ ๊ฐ์ฒด
  • Parameter Generation

ํฌ๊ฒŒ Young Generation, Old Generation, Parameter Generation ์œผ๋กœ ๋‚˜๋‰˜๋ฉฐ Young Generation ์€ eden , Survivor Space 0 , Survivor Space 1 ๋กœ ๋˜ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค.

Heap ์˜์—ญ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋‚˜๋‰˜๋Š”์ง€ ์‚ดํŽด๋ดค์œผ๋‹ˆ ์ด์ œ Heap ์˜์—ญ์— ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋˜๊ณ  GC๊ฐ€ ์ผ์–ด๋‚˜๋Š” ๊ณผ์ •์„ ์‚ดํŽด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์ž๋งˆ์ž ์ €์žฅ๋˜๋Š” ์žฅ์†Œ๋Š” Eden ์˜์—ญ์ž…๋‹ˆ๋‹ค.

  1. Eden ์˜์—ญ์— ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.
  2. Eden ์˜์—ญ์ด ๊ฝ‰ ์ฐจ๋ฉด Minor GC(๋งˆ์ด๋„ˆ GC)๊ฐ€ ๋ฐœ์ƒ(Mark-and-Sweep)ํ•ฉ๋‹ˆ๋‹ค.
  3. ์‚ด์•„์žˆ๋Š” ๊ฐ์ฒด๋งŒ Survivor 0 ์˜์—ญ์œผ๋กœ ๋ณต์‚ฌ๋˜๊ณ ,
  4. ๋‹ค์‹œ Eden ์˜์—ญ์„ ์ฑ„์šฐ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  5. Survivor 0 ์˜์—ญ์ด ๊ฝ‰ ์ฐจ๊ฒŒ ๋˜๋ฉด Survivor 1 ์˜์—ญ์œผ๋กœ ๊ฐ์ฒด๊ฐ€ ๋ณต์‚ฌ๋ฉ๋‹ˆ๋‹ค.
  6. ์ด ๋•Œ, Eden ์˜์—ญ์— ์žˆ๋Š” ๊ฐ์ฒด๋“ค ์ค‘ ์‚ด์•„์žˆ๋Š” ๊ฐ์ฒด๋“ค๋„ Survivor 1 ์˜์—ญ์œผ๋กœ ๊ฐ‘๋‹ˆ๋‹ค. ์ฆ‰, Survivor 0 ๋˜๋Š” 1 ๋‘˜ ์ค‘ ํ•˜๋‚˜๋Š” ๋ฐ˜๋“œ์‹œ ๋น„์›Œ์ ธ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  7. 1~4๊ฐ€ ๋ฐ˜๋ณต๋  ๋•Œ๋งˆ๋‹ค ์‚ด์•„์žˆ๋Š” ๊ฐ์ฒด๋Š” age๊ฐ’์ด ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  8. ์ผ์ • ์ˆ˜์ค€์˜ age๊ฐ’์— ๋„๋‹ฌํ•˜๋ฉด Young Generation์—์„œ Old Generation์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
  9. 1~5๊ฐ€ ๋ฐ˜๋ณตํ•˜๋‹ค๋ณด๋ฉด Old Generation๋„ ๊ฝ‰ ์ฐจ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด ๋•Œ major GC(๋ฉ”์ด์ € GC) ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. (Full GC ๋ผ๊ณ ๋„ ๋ถˆ๋ฆฐ๋‹ค.)

์œ„์˜ ๊ณผ์ •์„ ์‚ฌ์ง„์„ ํ†ตํ•ด ์ดํ•ดํ•ด ๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

image

์œ„์˜ ์‚ฌ์ง„์€ 1~4 ๊นŒ์ง€์˜ ๊ณผ์ •์ž…๋‹ˆ๋‹ค. ์œ„์˜ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜๋ฉฐ ์˜ค๋ž˜๋œ ๊ฐ์ฒด(age๊ฐ’์œผ๋กœ ํŒ๋‹จ)๋Š” Old Generation์œผ๋กœ ์ด๋™ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. (์•„๋ž˜์˜ ์‚ฌ์ง„ ์ฐธ๊ณ )

image

๊ทธ๋ ‡๊ฒŒ Old Generation๊นŒ์ง€ ๊ฝ‰์ฐจ๋ฉด ๋ฉ”์ด์ € GC๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜๋Š” ๊ฒƒ ์ž…๋‹ˆ๋‹ค.

๐Ÿ’ก minor GC vs major GC ๋ˆ„๊ฐ€ ๋” ๋น ๋ฅผ๊นŒ?
 --> ๋‹ต์€ minor GC!! 
 ์ด์œ ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋” ์ž‘์€ ๊ณต๊ฐ„์ด ํ• ๋‹น๋˜๊ณ , ๊ฐ์ฒด๋“ค์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹๋„ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. 

 


๐Ÿคท‍โ™‚๏ธ ์™œ GC๋ฅผ ๋‚˜๋ˆ„๋‚˜์š”..

 

๊ทธ๋ƒฅ ํ•œ ๋ฒˆ์— GC๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด ๋  ๊ฒƒ์„ ์™œ ๋‚˜๋ˆ„์—ˆ์„๊นŒ์š”?

GC ์„ค๊ณ„์ž๋“ค์€ ๋‘ ๊ฐ€์ง€์˜ ๊ฐ€์„ค์„ ์ „์žฌํ•˜๊ณ  GC๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

  • ๋Œ€๋ถ€๋ถ„์˜ ๊ฐ์ฒด๋Š” ๊ธˆ๋ฐฉ ์ ‘๊ทผ ๋ถˆ๊ฐ€๋Šฅํ•œ ์ƒํƒœ(unreachable)๊ฐ€ ๋œ๋‹ค. ์ฆ‰, ๊ธˆ๋ฐฉ garbage๊ฐ€ ๋œ๋‹ค.
  • ์˜ค๋ž˜๋œ ๊ฐ์ฒด์—์„œ ์ Š์€ ๊ฐ์ฒด๋กœ์˜ ์ฐธ์กฐ๋Š” ์•„์ฃผ ์ ๊ฒŒ ์กด์žฌํ•œ๋‹ค.

๊ทธ๋ฆฌ๊ณ , oracle ์‚ฌ์ดํŠธ์— ์žˆ๋Š” GC์˜ ๊ธฐ๋ณธ์‚ฌํ•ญ์„ ๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ ํ˜€์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

JVM์˜ ๋ชจ๋“  ๊ฐœ์ฒด๋ฅผ ํ‘œ์‹œํ•˜๊ณ  ์••์ถ•ํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์€ ๋น„ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค. ๋” ๋งŽ์€ ๊ฐœ์ฒด๊ฐ€ ํ• ๋‹น๋จ์— ๋”ฐ๋ผ ๊ฐœ์ฒด ๋ชฉ๋ก์ด ๋Š˜์–ด๋‚˜๊ณ  ๊ฐ€๋น„์ง€ ์ˆ˜์ง‘ ์‹œ๊ฐ„์ด ์ ์  ๋” ๊ธธ์–ด์ง‘๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์— ๋Œ€ํ•œ ๊ฒฝํ—˜์  ๋ถ„์„์— ๋”ฐ๋ฅด๋ฉด ๋Œ€๋ถ€๋ถ„์˜ ๊ฐœ์ฒด๋Š” ์ˆ˜๋ช…์ด ์งง์Šต๋‹ˆ๋‹ค.

์œ„์˜ ์–ด๋ ค์šด ๋‚ด์šฉ์„ ํ•œ ์ค„๋กœ ์š”์•ฝํ•˜์ž๋ฉด, ๊ธˆ๋ฐฉ garbage๊ฐ€ ๋˜์–ด์„œ GC์˜ ๋Œ€์ƒ์ด ๋˜๋‹ˆ ํ•œ ๋ฒˆ์— ํ•˜๋Š” ๊ฒƒ ๋ณด๋‹ค ์„ธ๋Œ€๋ณ„๋กœ ๋‚˜๋ˆ„์–ด์„œ GC๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ๋” ํšจ์œจ์ ์ด๋ผ๋Š” ๋ง ์ž…๋‹ˆ๋‹ค.


์ด๋ฒˆ ๊ธ€์—์„œ GC์˜ ์ข…๋ฅ˜๊นŒ์ง€ ๋‹ค๋ฃฐ ์ƒ๊ฐ์ด์—ˆ์ง€๋งŒ, ์ƒ๊ฐ๋ณด๋‹ค ๊ธ€์ด ๊ธธ์–ด์ ธ GC์˜ ์ข…๋ฅ˜์— ๋Œ€ํ•ด์„œ๋Š” ๋‹ค์Œ ๊ธ€์—์„œ ๋‹ค๋ฃจ๊ฒ ์Šต๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰ ํ•œ๋งˆ๋””..

๊ณต์‹๋ฌธ์„œ๋ฅผ ๋ณด๋Š” ๋ฒ•์„ ์•„์ฃผ ์‚ฌ์•„์•„์•Œ์ง ์•Œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ธ”๋กœ๊ทธ๋ฅผ ์ฐธ๊ณ ํ•˜๋Š” ๊ฒƒ ๋ณด๋‹ค ๊ณต์‹๋ฌธ์„œ๋ฅผ ๋ณด๊ณ  ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ๋” ์‰ฌ์› ์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์œ ํŠœ๋ธŒ๋ฅผ ๋ณด๋ฉฐ ์ดํ•ด๋ฅผ ๋„์™”์Šต๋‹ˆ๋‹ค ใ…Žใ…Ž


References

๋Œ“๊ธ€