garbageCollector

JVM(Java Virtual Machine)์˜ Garbage Collector

๋˜์˜ JVM์˜ Garbage Collector์„ ์ฐธ๊ณ ํ–ˆ์Šต๋‹ˆ๋‹ค.

JRE(Java Runtime Environment)

JRE๋Š” JVM ์ด ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ์„ ๋™์ž‘์‹œํ‚ฌ ๋•Œ ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํŒŒ์ผ๋“ค๊ณผ ๊ธฐํƒ€ ํŒŒ์ผ๋“ค์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. JRE๋Š” JVM์˜ ์‹คํ–‰ํ™˜๊ฒฝ์„ ๊ตฌํ˜„ํ–ˆ๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ƒˆ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“œ๋Š” ๋ฐ์—๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. ๊ตฌ์„ฑ์š”์†Œ

  • ์ž๋ฐ” API

  • JVM

JDK(Java Development Kit)

JDK๋Š” ์ž๋ฐ”์˜ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ˜ SDK์ด๋‹ค. JDK๋Š” JRE + ๊ฐœ๋ฐœ์„ ์œ„ํ•ด ํ•„์š”ํ•œ ๋„๊ตฌ(javac, java๋“ฑ)๋“ค์„ ํฌํ•จํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ + ์‹คํ–‰์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

๋•Œ๋กœ๋Š” ์ปดํ“จํ„ฐ์—์„œ Java ๊ฐœ๋ฐœ์„ ์ˆ˜ํ–‰ํ•  ๊ณ„ํš์ด ์—†๋”๋ผ๋„ JDK๊ฐ€ ํ•„์š”ํ•œ ์ƒํ™ฉ์ด ์กด์žฌํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, JSP๋กœ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌํ•  ๋•Œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„ ๋‚ด์—์„œ Java ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. ์ด ์ƒํ™ฉ์—์„œ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„๊ฐ€ JSP๋ฅผ Java ์„œ๋ธ”๋ฆฟ์œผ๋กœ ๋ณ€ํ™˜ํ•˜๊ณ , JDK๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ธ”๋ฆฟ์„ ์ปดํŒŒ์ผํ•ด์•ผํ•˜๋ฏ€๋กœ JDK๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

์ž๋ฐ” ์„œ๋ธ”๋ฆฟ(Servlet)์€ ์ž๋ฐ”๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์›นํŽ˜์ด์ง€๋ฅผ ๋™์ ์œผ๋กœ ์ƒ์„ฑํ•˜๋Š” ์„œ๋ฒ„์ธก ํ”„๋กœ๊ทธ๋žจ์„ ๋งํ•œ๋‹ค. ์˜ˆ๋กœ, ์Šคํ”„๋ง๋ถ€ํŠธ์—์„œ๋Š” DispatcherServlet์„ ์‚ฌ์šฉํ•ด MVC๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค.

JVM(Java Virtual Machine)

์ž๋ฐ” ๋ฐ”์ดํŠธ์ฝ”๋“œ๋ฅผ ํ•ด์„ํ•˜๊ณ  ์‹คํ–‰ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ

  • ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ, Garbage Collector ์ˆ˜ํ–‰

  • ์ž๋ฐ” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํด๋ž˜์Šค ๋กœ๋”(Class Loader)๋ฅผ ํ†ตํ•ด ์ฝ์–ด ๋“ค์—ฌ์„œ ์ž๋ฐ” API์™€ ํ•จ๊ป˜ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ

Garbage Collector๋ž€

์ž๋ฐ” ๋Ÿฐํƒ€์ž„ ์‹คํ–‰์ค‘ ๋™์ ์œผ๋กœ ํ• ๋‹นํ•œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ ์ค‘ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์˜์—ญ์„ ํƒ์ง€ํ•˜์—ฌ ํ•ด์ œํ•˜๋Š” ๊ธฐ๋Šฅ

Stack, Heap

Stack

  • ์ •์ ์œผ๋กœ ํ• ๋‹นํ•œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ

  • ์›์‹œ ํƒ€์ž…์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฐ’๊ณผ ํ•จ๊ป˜ ํ• ๋‹น, Heap์˜์—ญ์— ์ƒ์„ฑ๋œ Objectํƒ€์ž…์˜ ๋ฐ์ดํ„ฐ์˜ ์ฐธ์กฐ ๊ฐ’ ํ• ๋‹น

Heap

  • ๋™์ ์œผ๋กœ ํ• ๋‹นํ•œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ

  • ๋ชจ๋“  Object ํƒ€์ž…์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ํ• ๋‹น, Heap์˜์—ญ์˜ Object๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ฐธ์กฐ ๋ณ€์ˆ˜๊ฐ€ Stack์— ํ• ๋‹น

(์ฐธ๊ณ ๋กœ ์ฝ”ํ‹€๋ฆฐ์—์„œ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋‹จ๊ณ„์—์„œ ์›์‹œ ํƒ€์ž…, ๋ž˜ํผ ํƒ€์ž…์„ ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ปดํŒŒ์ผ ์‹œ์— ์ฝ”ํ‹€๋ฆฐ์ด ์›์‹œ ํƒ€์ž… ๋˜๋Š” ๋ž˜ํผ ํƒ€์ž…์œผ๋กœ ์ž๋™๋ณ€ํ™˜ํ•œ๋‹ค.)

Garbage Collector์˜ ์ฒ˜๋ฆฌ ๊ณผ์ •

  1. Mark : Garbage Collector๊ฐ€ Stack์˜ ๋ชจ๋“  ๋ณ€์ˆ˜๋ฅผ ์Šค์บ”ํ•˜๋ฉด์„œ ๊ฐ๊ฐ ์–ด๋–ค ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋Š”์ง€ ์ฐพ์•„์„œ ๋งˆํ‚นํ•œ๋‹ค.

  2. Mark : Reachable Object๊ฐ€ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋Š” ๊ฐ์ฒด๋„ ์ฐพ์•„์„œ ๋งˆํ‚นํ•œ๋‹ค.

  3. Sweep : ๋งˆํ‚น๋˜์ง€ ์•Š์€ ๊ฐ์ฒด๋ฅผ Heap์—์„œ ์ œ๊ฑฐํ•œ๋‹ค.

Garbage Collector์˜ work๋Š” Mark์™€ Sweep์˜ ๋ฐ˜๋ณต๊ณผ์ •์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

์˜ˆ์‹œ

category๋Š” List(Reachable Object)๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๊ณ  List(Reachable Object)๋Š” String(Reachable Object)์„ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋‹ค.

gc1

์ด ๊ณผ์ •์—์„œ ๋งˆํ‚น๋˜์ง€ ์•Š์€ String("์š”๋ฆฌ") : Unreachable Object ๋Š” Sweep๋œ๋‹ค.

gc2

Stop The World

Garbage Collector๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ jvm์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰์„ ๋ฉˆ์ถ”๋Š” ๊ฒƒ์ด๋‹ค. Stop The World๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด Garbage Collector๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์Šค๋ ˆ๋“œ๋ฅผ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ์Šค๋ ˆ๋“œ๋Š” ๋ชจ๋‘ ์ž‘์—…์„ ๋ฉˆ์ถ˜๋‹ค. Garbage Collector ์ž‘์—…์„ ์™„๋ฃŒํ•œ ์ดํ›„์— ์ค‘๋‹จํ•œ ์ž‘์—…์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•œ๋‹ค.

'์‹คํ–‰ํ•˜๋Š” ์Šค๋ ˆ๋“œ๋ฅผ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ์Šค๋ ˆ๋“œ๋Š” ๋ชจ๋‘ ์ž‘์—…์„ ๋ฉˆ์ถ˜๋‹ค'๋Š” ๊ฐœ๋…์€ ๊ผญ Garbage Collector์˜ ์Šค๋ ˆ๋“œ์—๋งŒ ๊ตญํ•œ๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋‹ค๋ฅธ ๊ณณ์—๋„ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค. ex) ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค : ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค ํ† ํ”ฝ ๋‚ด์˜ ํŒŒํ‹ฐ์…˜์„ ๊ฐ ์ธ์Šคํ„ด์Šค๊ฐ€ consumeํ•˜๋Š” ๊ฒฝ์šฐ

sqs-rebalancing

ํ•œ ์ธ์Šคํ„ด์Šค์— ์ด์ƒ์ด ๋ฐœ์ƒํ•  ๊ฒฝ์šฐ rebalancing์„ ์ง„ํ–‰ํ•˜๋Š”๋ฐ ๋ชจ๋“  ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•œ ํŒŒํ‹ฐ์…˜ ์†Œ์œ ๊ถŒ์„ ํšŒ์ˆ˜ํ•˜๊ณ  ์ง„ํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ stop the world์— ๊ฐ€๊น๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

sqs-rebalancing2

kafka 2.3 ์ด์ „ ๋ฒ„์ „์—์„œ๋Š” ์ด๋Ÿฐ ์ „์ฒด์ ์ธ ์†Œ์œ ๊ถŒ ํšŒ์ˆ˜๊ฐ€ ์ด์Šˆ๊ฐ€ ๋˜์—ˆ๋‹ค๊ณ  ํ•œ๋‹ค. ์ด ๊ฒฝ์šฐ ๋ชจ๋“  ์ธ์Šคํ„ด์Šค๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ์‹œ๊ฐ„์ด ์กด์žฌํ•ด ์„œ๋น„์Šค์— ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

Last updated