Hamutaro - Hamtaro 4

Java

[JAVA] Garbage Collection

carsumin 2022. 1. 11. 14:46

 

https://www.oracle.com/webfolder/technetwork/tutorials/obe/java/gc01/index.html

 

Java Garbage Collection Basics

Java Overview Java is a programming language and computing platform first released by Sun Microsystems in 1995. It is the underlying technology that powers Java programs including utilities, games, and business applications. Java runs on more than 850 mill

www.oracle.com

 

 

๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ (Garbage Collection, GC)

 

  • ์ž๋ฐ”์—์„œ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ์ž๋™์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ธฐ๋Šฅ
  • Garbage Collector ์‚ฌ์šฉํ•˜์—ฌ ๋ถˆํ•„์š”ํ•œ ๊ฐ์ฒด๋ฅผ ์ž๋™์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ œ๊ฑฐ

 

์ฃผ์š” ๊ฐœ๋…

 

  • ๊ฐ์ฒด์™€ ์ฐธ์กฐ
- ์ž๋ฐ”์—์„œ ๊ฐ์ฒด๋Š” Heap ๋ฉ”๋ชจ๋ฆฌ์— ์ƒ์„ฑ๋จ
- ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฐ์ฒด๋Š” ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ œ๊ฑฐ
- ๊ฐ์ฒด๊ฐ€ ์ฐธ์กฐ๋˜๋Š” ๊ฒฝ์šฐ๋Š” Garbage Collector๊ฐ€ ์‚ญ์ œํ•˜์ง€ ์•Š๋Š”๋‹ค

        

 

  • Garbage Collection์˜ ๋™์ž‘ ์›๋ฆฌ
- ์ฐธ์กฐ ์นด์šดํŠธ : ๊ฐ ๊ฐ์ฒด๊ฐ€ ๋ช‡๊ฐœ์˜ ์ฐธ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”์ง€ ๊ณ„์‚ฐ
- mark-sweep ์•Œ๊ณ ๋ฆฌ์ฆ˜ : ์‚ด์•„์žˆ๋Š” ๊ฐ์ฒด๋ฅผ ๋งˆํฌํ•œ ํ›„ ๊ทธ ์™ธ์˜ ๊ฐ์ฒด๋ฅผ ์Šค์œ•ํ•˜์—ฌ ์‚ญ์ œํ•จ
- mark-compact ์•Œ๊ณ ๋ฆฌ์ฆ˜ : mark-sweep์˜ ๋‹จ์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ๋‹จํŽธํ™”๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋งˆํฌํ•œ ํ›„ ์‚ด์•„์žˆ๋Š” ๊ฐ์ฒด๋ฅผ ์—ฐ์†๋œ ๊ณต๊ฐ„์œผ๋กœ ์ด๋™

 

 

  • GC์˜ ์ข…๋ฅ˜
- Young Generation : ์ƒˆ๋กœ ์ƒ์„ฑ๋œ ๊ฐ์ฒด๋“ค์ด ์ €์žฅ๋˜๋Š” ์˜์—ญ
- Old Generation : ์˜ค๋ž˜๋œ ๊ฐ์ฒด๋“ค์ด ์ €์žฅ๋˜๋Š” ์˜์—ญ
- Permanent Generation / Metaspace : ํด๋ž˜์Šค ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์™€ ๊ฐ™์€ ์ •๋ณด๋ฅผ ์ €์žฅ

  • GC์˜ ์ฃผ๊ธฐ
- Minor GC : Young Generation์—์„œ ๋ฐœ์ƒํ•˜๋Š” Garbage Collection์œผ๋กœ, ์ž์ฃผ ๋น ๋ฅด๊ฒŒ ๋ฐœ์ƒ
- Major GC : Old Generation์—์„œ ๋ฐœ์ƒํ•˜๋Š” Garbage Collection์œผ๋กœ, ์ƒ๋Œ€์ ์œผ๋กœ ์ ๊ณ  ์˜ค๋žœ์‹œ๊ฐ„์— ๊ฑธ์ณ ๋ฐœ์ƒ

 

 

 

  • GC ์•Œ๊ณ ๋ฆฌ์ฆ˜
- Serial GC : ๋‹จ์ผ Thread๋กœ Garbage Collection ์ˆ˜ํ–‰, ์ž‘์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ ํ•ฉ
- Parallel GC : ์—ฌ๋Ÿฌ Thread๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Garbage Collection ์ˆ˜ํ–‰, ๋ฉ€ํ‹ฐ ์ฝ”์–ด ์‹œ์Šคํ…œ์—์„œ ์„ฑ๋Šฅ ํ–ฅ์ƒ
- Concurrent Mark-Sweep (CMS) GC : ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ๋™์‹œ์— Garbage Collection์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ์‘๋‹ต์„ฑ ํ–ฅ์ƒ
- G1(Garbage-First) GC : ๋Œ€ํ˜• Heap์—์„œ ํšจ์œจ์ ์ธ Garbage Collection์„ ๋ชฉํ‘œ๋กœ ์„ค๊ณ„๋œ GC 

 

 

Garbage Collection์˜ ์žฅ์ ๊ณผ ๋‹จ์ 

 

  • ์žฅ์ 

๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๊ฐ€ ์ž๋™์œผ๋กœ ๋จ

๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜ ๊ฐ€๋Šฅ์„ฑ ์ค„์–ด๋“ฆ

 

  • ๋‹จ์ 

GC๊ฐ€ ์ˆ˜ํ–‰๋˜๋Š”๋™์•ˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„ฑ๋Šฅ์ด ์ €ํ•˜๋  ์ˆ˜ ์žˆ์Œ

์‹ค์‹œ๊ฐ„ ์‹œ์Šคํ…œ์—์„œ๋Š” GC๊ฐ€ ์„ฑ๋Šฅ์„ ๋ณด์žฅํ•˜๊ธฐ ์–ด๋ ค์›€