๊ด€๋ฆฌ ๋ฉ”๋‰ด

๐‘†๐‘ข๐‘›๐‘ โ„Ž๐‘–๐‘›๐‘’ ๐‘Ž๐‘“๐‘ก๐‘’๐‘Ÿ ๐‘Ÿ๐‘Ž๐‘–๐‘›โœง

[REVIEW] JVM ๋ฐ‘๋ฐ”๋‹ฅ๊นŒ์ง€ ํŒŒํ—ค์น˜๊ธฐ - 3.1 ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ์™€ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ์ „๋žต ๋ณธ๋ฌธ

๐—ฃ๐—ฟ๐—ผ๐—ด๐—ฟ๐—ฎ๐—บ๐—บ๐—ถ๐—ป๐—ด๐Ÿ’ป/๐‰๐š๐ฏ๐š

[REVIEW] JVM ๋ฐ‘๋ฐ”๋‹ฅ๊นŒ์ง€ ํŒŒํ—ค์น˜๊ธฐ - 3.1 ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ์™€ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ์ „๋žต

๐ŸคRyusun๐Ÿค 2025. 2. 15. 10:34

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

 

๋ฐ˜๋ฉด ์ž๋ฐ” ํž™๊ณผ ๋ฉ”์„œ๋“œ ์˜์—ญ์€ ๊ตฌํ˜„ํ•œ ํด๋ž˜์Šค๋งˆ๋‹ค ์š”๊ตฌํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ๊ฐ€ ๋‹ค๋ฅผ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์–ด๋–ค ์กฐ๊ฑด ๋ถ„๊ธฐ๋ฅผ ์‹คํ–‰ํ•˜๋Š๋ƒ์— ๋”ฐ๋ผ ๋ฉ”๋ชจ๋ฆฌ ์š”๊ตฌ๋Ÿ‰์ด ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๋‹ค. ํ”„๋กœ๊ทธ๋žจ์ด ์–ด๋–ค ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ• ์ง€, ์–ผ๋งˆ๋‚˜ ๋งŽ์ด ๋งŒ๋“ค์ง€๋Š” ์˜ค์ง ๋Ÿฐํƒ€์ž„์—๋งŒ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ด ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ๋“ค์˜ ํ• ๋‹น๊ณผ ํšŒ์ˆ˜๋Š” ๋™์ ์œผ๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค. ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๋Š” ๋ฐ”๋กœ ์ด๋Ÿฐ ์˜์—ญ์„ ๊ด€๋ฆฌํ•˜๋Š”๋ฐ ์ง‘์ค‘ํ•œ๋‹ค. 

 

์ž๋ฐ”๋Š” ๊ฑฐ์˜ ๋ชจ๋“  ๊ฐ์ฒด ์ธ์Šคํ„ด์Šค๋ฅผ ํž™์— ์ €์žฅํ•œ๋‹ค. ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๋Š” ์–ด๋–ค ๊ฐ์ฒด๊ฐ€ ์‚ด์•„์žˆ๊ณ , ์ฃฝ์—ˆ๋Š”์ง€๋ฅผ ํŒ๋‹จํ•œ ํ›„, ํž™์„ ์ฒญ์†Œํ•œ๋‹ค.

 

๊ทธ๋Ÿผ ์–ด๋–ป๊ฒŒ ๊ฐ์ฒด๊ฐ€ ์‚ด์•„์žˆ๋Š”์ง€, ์ฃฝ์–ด์žˆ๋Š”์ง€ ํŒ๋‹จํ• ์ˆ˜ ์žˆ์„๊นŒ?

๋Œ€ํ‘œ์ ์œผ๋กœ ์ฐธ์กฐ ์นด์šดํŒ…์„ ์‚ฌ์šฉํ•˜์—ฌ ํŒ๋‹จํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ์ž๋ฐ” ๊ฐ€์ƒ ๋จธ์‹ ์€ ์ฐธ์กฐ ์นด์šดํŒ…์„ ์“ฐ์ง€ ์•Š๋Š”๋‹ค.

 

์ฐธ์กฐ ์นด์šดํŒ…
1. ๊ฐ์ฒด๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ฐธ์กฐ ์นด์šดํ„ฐ(reference counter)๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค. ์ฐธ์กฐํ•˜๋Š” ๊ณณ์ด ํ•˜๋‚˜ ๋Š˜์–ด๋‚  ๋•Œ๋งˆ๋‹ค ์นด์šดํ„ฐ ๊ฐ’์„ 1์”ฉ ์ฆ๊ฐ€์‹œํ‚จ๋‹ค.
2. ์ฐธ์กฐํ•˜๋Š” ๊ณณ์ด ํ•˜๋‚˜ ์‚ฌ๋ผ์งˆ ๋•Œ๋งˆ๋‹ค ์นด์šดํ„ฐ ๊ฐ’์„ 1์”ฉ ๊ฐ์†Œ์‹œํ‚จ๋‹ค.
3. ์นด์šดํ„ฐ ๊ฐ’์ด 0์ด ๋œ ๊ฐ์ฒด๋Š” ๋”๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค์–ด,  ์ˆœํ™˜ ์ฐธ์กฐ ๋ฌธ์ œ๋ฅผ ์ฐธ์กฐ ์นด์šดํŒ…๋งŒ์œผ๋กœ ํ•ด๊ฒฐํ•˜๊ธฐ ์–ด๋ ต๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ˆœํ™˜ ์ฐธ์กฐ๊ฐ™์€ ๋ฌธ์ œ๋Š” ์„œ๋กœ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ฐธ์กฐ ์นด์šดํ„ฐ๋Š” 0์ด ์•ˆ๋˜๋Š” ๋ฌธ์ œ๋กœ ์ฐธ์กฐ ์นด์šดํŒ… ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ๋Š” ๋‘˜์„ ํšŒ์ˆ˜ํ•˜์ง€ ๋ชปํ•œ๋‹ค. 

 

 

๋„๋‹ฌ ๊ฐ€๋Šฅ์„ฑ ๋ถ„์„ ์•Œ๊ณ ๋ฆฌ์ฆ˜

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

 

์ž๋ฐ”์—์„œ GC ๋ฃจํŠธ๋กœ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ์ฒด๋Š” ์ •ํ•ด์ ธ์žˆ๋‹ค.

  • ๊ฐ€์ƒ ๋จธ์‹  ์Šคํƒ(์Šคํƒ ํ”„๋ ˆ์ž„์˜ ์ง€์—ญ ๋ณ€์ˆ˜ ํ…Œ์ด๋ธ”)์—์„œ ์ฐธ์กฐํ•˜๋Š” ๊ฐ์ฒด
    • ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ๋ฉ”์„œ๋“œ์—์„œ ์“ฐ๋Š” ๋งค๊ฐœ ๋ณ€์ˆ˜, ์ง€์—ญ ๋ณ€์ˆ˜, ์ž„์‹œ ๋ณ€์ˆ˜ ๋“ฑ
  • ๋ฉ”์„œ๋“œ ์˜์—ญ์—์„œ ํด๋ž˜์Šค๊ฐ€ ์ •์  ํ•„๋“œ๋กœ ์ฐธ์กฐํ•˜๋Š” ๊ฐ์ฒด
    • ์ž๋ฐ” ํด๋ž˜์Šค์˜ ์ฐธ์กฐ ํƒ€์ž… ์ •์  ๋ณ€์ˆ˜
  • ๋ฉ”์„œ๋“œ ์˜์—ญ์—์„œ ์ƒ์ˆ˜๋กœ ์ฐธ์กฐ๋˜๋Š” ๊ฐ์ฒด 
    • ๋ฌธ์ž์—ด ํ…Œ์ด๋ธ” ์•ˆ์˜ ์ฐธ์กฐ
  • ๋„ค์ดํ‹ฐ๋ธŒ ๋ฉ”์„œ๋“œ ์Šคํƒ์—์„œ JNI(๋„ค์ดํ‹ฐ๋ธŒ ๋ฉ”์„œ๋“œ)๊ฐ€ ์ฐธ์กฐํ•˜๋Š” ๊ฐ์ฒด
  • ์ž๋ฐ” ๊ฐ€์ƒ ๋จธ์‹  ๋‚ด๋ถ€์—์„œ ์“ฐ์ด๋Š” ์ฐธ์กฐ
    • ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ ํƒ€์ž…์— ํ•ด๋‹นํ•˜๋Š” Class ๊ฐ์ฒด
    • NullPointerException, OutOfMemoryError ๋“ฑ์˜ ์ผ๋ถ€ ์ƒ์ฃผ ์˜ˆ์™ธ ๊ฐ์ฒด
    • ์‹œ์Šคํ…œ ํด๋ž˜์Šค ๋กœ๋”
  • ๋™๊ธฐํ™” ๋ฝ(synchronized)์œผ๋กœ ์ž ๊ฒจ ์žˆ๋Š” ๋ชจ๋“  ๊ฐ์ฒด
  • ์ž๋ฐ” ๊ฐ€์ƒ ๋จธ์‹  ๋‚ด๋ถ€ ์ƒํ™ฉ์„ ๋ฐ˜์˜ํ•˜๋Š” JVMTI์— ๋“ฑ๋ก๋œ ์ฝœ๋ฐฑ, ๋กœ์ปฌ ์ฝ”๋“œ ์บ์‹œ ๋“ฑ

๊ฐ์ฒด๋Š” ๋‹ค๋ฅธ ์˜์—ญ์— ์žˆ๋Š” ๊ฐ์ฒด๋„ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์—ฐ๊ด€๋œ ์˜์—ญ์˜ ๊ฐ์ฒด๋“ค๋„ GC ๋ฃจํŠธ ์ง‘ํ•ฉ์— ํฌํ•จ์‹œ์ผœ์•ผ ๋„๋‹ฌ ๊ฐ€๋Šฅ์„ฑ์„ ์ •ํ™•ํ•˜๊ฒŒ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

 

์ฐธ์กฐ

๊ฐ์ฒด์˜ ์ƒ์‚ฌ ํŒ๋‹จ๊ณผ '์ฐธ์กฐ'๋Š” ๋ถ„๋ฆฌํ•ด์„œ ์ƒ๊ฐํ•  ์ˆ˜ ์—†๋‹ค. JDK 1.2๋ถ€ํ„ฐ ์ฐธ์กฐ ๊ฐœ๋…์ด ํ™•์žฅ๋˜์–ด ์ฐธ์กฐ๋ฅผ ๋„ค ๊ฐ€์ง€๋กœ ๊ตฌ๋ถ„ํ•œ๋‹ค.

 

  • ๊ฐ•ํ•œ ์ฐธ์กฐ(strong reference)
    • ๊ฐ€์žฅ ์ „ํ†ต์ ์ธ ์ •์˜์˜ ์ฐธ์กฐ
    • Object obj = new Object()์ฒ˜๋Ÿผ ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ์—์„œ ์ฐธ์กฐ๋ฅผ ํ• ๋‹น์„ ๋œปํ•จ
    • ๊ฐ•ํ•œ ์ฐธ์กฐ ๊ด€๊ณ„๊ฐ€ ๋‚จ์•„์žˆ๋Š” ๊ฐ์ฒด๋Š” ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๊ฐ€ ์ ˆ๋Œ€ ํšŒ์ˆ˜ํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ๋ถ€๋“œ๋Ÿฌ์šด ์ฐธ์กฐ(soft reference)
    • ์œ ์šฉํ•˜์ง€๋งŒ ํ•„์ˆ˜๊ฐ€ ์•„๋‹Œ ๊ฐ์ฒด
    • ๋ฉ”๋ชจ๋ฆฌ ์˜ค๋ฒ„ํ”Œ๋กœ๊ฐ€ ๋‚˜๊ธฐ ์ง์ „์— ๋‘ ๋ฒˆ์งธ ํšŒ์ˆ˜๋ฅผ ์œ„ํ•œ ํšŒ์ˆ˜ ๋ชฉ๋ก์— ์ถ”๊ฐ€๋œ๋‹ค.
    • ๋‘๋ฒˆ์งธ ํšŒ์ˆ˜ ํ›„์—๋„ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•˜๋ฉด ๊ทธ๋•Œ ๋ฉ”๋ชจ๋ฆฌ ์˜ค๋ฒ„ํ”Œ๋กœ ์˜ˆ์™ธ๋ฅผ ๋˜์ง„๋‹ค. 
  • ์•ฝํ•œ ์ฐธ์กฐ(weak reference)
    •  ๋ถ€๋“œ๋Ÿฌ์šด ์ฐธ์กฐ๋ณด๋‹ค ์—ฐ๊ฒฐ ๊ฐ•๋„๊ฐ€ ๋” ์•ฝํ•˜๋‹ค.
    • ๋‹ค์Œ๋ฒˆ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜๊นŒ์ง€๋งŒ ์‚ด์•„์žˆ๊ณ , ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๊ฐ€ ๋™์ž‘ํ•˜๊ธฐ ์‹œ์ž‘ํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋„‰๋„‰ํ•˜๋”๋ผ๋„ ์•ฝํ•˜๊ฒŒ ์ฐธ์กฐ๋œ ๊ฐ์ฒด๋Š” ๋ชจ๋‘ ํšŒ์ˆ˜๋œ๋‹ค.
  • ์œ ๋ น ์ฐธ์กฐ(phantom reference)
    • ๊ฐ์ฒด ์ˆ˜๋ช…์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š”๋‹ค.
    • ์œ ๋ น ์ฐธ์กฐ๋ฅผ ํ†ตํ•ด ๊ฐ์ฒด ์ธ์Šคํ„ด์Šค๋ฅผ ๊ฐ€์ ธ์˜ค์ง€ ๋ชปํ•œ๋‹ค.
    • ์œ ์ผํ•œ ๋ชฉ์ ์€ ๋Œ€์ƒ ๊ฐ์ฒด๊ฐ€ ํšŒ์ˆ˜๋  ๋•Œ ์•Œ๋ฆผ์„ ๋ฐ›๊ธฐ ์œ„ํ•ด์„œ๋‹ค.

 

์‚ด์•˜๋‚˜ ์ฃฝ์—ˆ๋‚˜?

๋„๋‹ฌ ๊ฐ€๋Šฅ์„ฑ ๋ถ„์„ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด '๋„๋‹ฌ ๋ถˆ๊ฐ€๋Šฅ'์œผ๋กœ ํŒ๋‹จํ•œ ๊ฐ์ฒด๋Š” ๋ฐ˜๋“œ์‹œ ์ฃฝ์€ ๊ฐ์ฒด๋Š” ์•„๋‹ˆ๊ณ  ๋‘ ๋ฒˆ์˜ ํ‘œ์‹œ ๊ณผ์ •์„ ๊ฑฐ์ณ์•ผ ํ•œ๋‹ค.

๋„๋‹ฌ ๊ฐ€๋Šฅ์„ฑ ๋ถ„์„์œผ๋กœ GC ๋ฃจํŠธ์™€ ์—ฐ๊ฒฐ๋œ ์ฐธ์กฐ ์ฒด์ธ์„ ์ฐพ์ง€ ๋ชปํ•œ ๊ฐ์ฒด์—๋Š” ์ฒซ ๋ฒˆ์งธ ํ‘œ์‹œ๊ฐ€ ์ด๋ฃจ์–ด์ง€๋ฉฐ ํ•„ํ„ฐ๋ง์ด ์ง„ํ–‰๋œ๋‹ค. ํ•„ํ„ฐ๋ง ์กฐ๊ฑด์€ ์ข…๋ฃŒ์ž(finalizer), ์ฆ‰ 'finalize() ๋ฉ”์„œ๋“œ๋ฅผ ์‹คํ•ดํ•ด์•ผ ํ•˜๋Š” ๊ฐ์ฒด์ธ๊ฐ€'์ด๋‹ค. finalize()๊ฐ€ ํ•„์š” ์—†๋Š” ๊ฐœ์ฒด์ด๊ฑฐ๋‚˜ ๊ฐ€์ƒ ๋จธ์‹ ์ด finalize()๋ฅผ ์ด๋ฏธ ํ˜ธ์ถœํ•œ ๊ฒฝ์šฐ ๋ชจ๋‘ '์‹คํ–‰ํ•  ํ•„์š” ์—†์Œ'์œผ๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค.

 

finalize()๋ฅผ ์‹คํ–‰ํ•ด์•ผ ํ•˜๋Š” ๊ฐ์ฒด๋Š” F-ํ(F-Queue)๋ผ๋Š” ๋Œ€๊ธฐ์—ด์— ์ถ”๊ฐ€๋œ๋‹ค. ๊ทธ๋Ÿผ ๊ฐ€์ƒ ๋จธ์‹ ์ด ๋‚˜์ค‘์— ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ์ข…๋ฃŒ์ž ์Šค๋ ˆ๋“œ๋ฅผ ์ƒ์„ฑํ•ด F-ํ์— ๋“ค์–ด์žˆ๋Š” ๊ฐ์ฒด๋“ค์˜ finalize() ๋ฉ”์„œ๋“œ๋ฅผ ์‹คํ–‰ํ•œ๋‹ค. ๊ฐ€์ƒ๋จธ์‹ ์€ ์ด ๋ฉ”์„œ๋“œ๋ฅผ ์‹œ์ž‘๋งŒ ํ•  ๋ฟ ์ข…๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๋Š”๋‹ค. 

๋งŒ์•ฝ ๊ฐ์ฒด๊ฐ€ finalize()๋ฅผ ์ด์šฉํ•˜์—ฌ ์ฐธ์กฐ ์ฒด์ธ์ƒ์˜ ์•„๋ฌด ๊ฐ์ฒด์™€ ์—ฐ๊ฒฐ๋˜๋ฉด ๋‘ ๋ฒˆ์งธ ํ‘œ์‹œ ๊ณผ์ •์—์„œ 'ํšŒ์ˆ˜ ๋Œ€์ƒ' ๋ชฉ๋ก์—์„œ ์ œ์™ธ๋œ๋‹ค.

 

ํ•˜์ง€๋งŒ finalize()์€ ์‹คํ–‰ํ•˜๋Š” ๋น„์šฉ๋„ ๋†’๊ณ  ๋ถˆํ™•์‹ค์„ฑ๋„ ํฌ๋ฏ€๋กœ ๊ฐ€๋Šฅํ•œ ํ•œ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒŒ ์ข‹๋‹ค.

 

 

๋ฉ”์„œ๋“œ ์˜์—ญ ํšŒ์ˆ˜ํ•˜๊ธฐ

<์ž๋ฐ” ๊ฐ€์ƒ ๋จธ์‹  ๋ช…์„ธ>์— ๋”ฐ๋ฅด๋ฉด ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๊ฐ€ ๋ฉ”์„œ๋“œ ์˜์—ญ์„ ๋ฐ˜๋“œ์‹œ ์ฒญ์†Œํ•ด์•ผ ํ•˜๋Š” ๊ฑด ์•„๋‹ˆ๋‹ค. ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ ํ•œ ๋ฒˆ์œผ๋กœ ์ž๋ฐ” ํž™์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ 70~90% ๋ฅผ ํšŒ์ˆ˜ํ•˜๋Š” ๋ฐ˜๋ฉด, ๋ฉ”์„œ๋“œ ์˜์—ญ์€ ํšŒ์ˆ˜ ์กฐ๊ฑด์ด ๊นŒ๋‹ค๋กœ์›Œ์„œ ๋Œ€์ฒด๋กœ '๋น„์šฉ ํšจ์œจ'์ด ์ข‹์ง€ ์•Š๋‹ค.

 

๋ฉ”์„œ๋“œ ์˜์—ญ์˜ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์€ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” '์ƒ์ˆ˜'์™€ 'ํด๋ž˜์Šค'๋ฅผ ํšŒ์ˆ˜ํ•œ๋‹ค. ์ƒ์ˆ˜๊ฐ€ ์ฐธ์กฐํ•˜๋Š” ๊ฐ์ฒด๊ฐ€ ์—†๊ณ , ๊ฐ€์ƒ ๋จธ์‹ ์—์„œ ์ด ์ƒ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ์—†๋‹ค๋ฉด ํšŒ์ˆ˜ํ•œ๋‹ค. ํ•˜์ง€๋งŒ ๋” ์ด์ƒ ์“ฐ์ด์ง€ ์•Š๋Š” 'ํด๋ž˜์Šค'๋ฅผ ํŒ๋‹จํ•  ๋•Œ๋Š” ๋‹ค์Œ ์„ธ ์กฐ๊ฑด์„ ๋™์‹œ์— ๋งŒ์กฑํ•ด์•ผ ํ•œ๋‹ค.

  • ์ด ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๊ฐ€ ๋ชจ๋‘ ํšŒ์ˆ˜๋˜์—ˆ๋‹ค. ์ฆ‰, ์ž๋ฐ” ํž™์—๋Š” ํ•ด๋‹น ํด๋ž˜์Šค์™€ ํ•˜์œ„ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๊ฐ€ ํ•˜๋‚˜๋„ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ์ด ํด๋ž˜์Šค๋ฅผ ์ฝ์–ด ๋“ค์ธ ํด๋ž˜์Šค ๋กœ๋”๊ฐ€ ํšŒ์ˆ˜๋˜์—ˆ๋‹ค. ์ด ์กฐ๊ฑด์€ OSGi ๋‚˜ JSP ๋ฆฌ๋กœ๋”ฉ์ฒ˜๋Ÿผ ์„ธ์‹ฌํ•˜๊ฒŒ ์„ค๊ณ„๋œ ๋Œ€์•ˆ ํด๋ž˜์Šค ๋กœ๋” ์—†์ด๋Š” ์ถฉ์กฑํ•˜๊ธฐ ์–ด๋ ต๋‹ค.
  • ์ด ํด๋ž˜์Šค์— ํ•ด๋‹นํ•˜๋Š” java.lang.Class ๊ฐ์ฒด๋ฅผ ์•„๋ฌด ๊ณณ์—์„œ ์ฐธ์กฐํ•˜์ง€ ์•Š๊ณ , ๋ฆฌํ”Œ๋ ‰์…˜ ๊ธฐ๋Šฅ์œผ๋กœ ์ด ํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•˜๋Š” ๊ณณ๋„ ์ „ํ˜€ ์—†๋‹ค.

์ž๋ฐ” ๊ฐ€์ƒ ๋จธ์‹ ์€ ์„ธ ์กฐ๊ฑด์— ๋ถ€ํ•ฉํ•˜๋Š” ์“ธ๋ชจ์—†๋Š” ํด๋ž˜์Šค๋“ค์„ ํšŒ์ˆ˜ํ•˜๋„๋ก ํ—ˆ์šฉํ•œ๋‹ค. 

ํ•ซ์ŠคํŒŸ ๊ฐ€์ƒ ๋จธ์‹ ์€ ํด๋ž˜์Šค ํšŒ์ˆ˜ ์—ฌ๋ถ€๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋„๋ก -Xnoclassgc ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ œ๊ณตํ•œ๋‹ค. ๋˜ํ•œ -verbose:class, -Xlog:class+load=info, -Xlog:class_unload=info ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ๋Š” ํด๋ž˜์Šค๊ฐ€ ๋กœ๋”ฉ๋˜๊ณ  ์–ธ๋กœ๋”ฉ ๋˜๋Š” ์ •๋ณด๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 


 

๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜

๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ๋Š” ์ˆ˜๋งŽ์€ ๊ธฐ๋ฒ•์ด ํ™œ์šฉ๋˜๋ฉฐ ๊ฐ€์ƒ ๋จธ์‹  ๋˜๋Š” ํ”Œ๋žซํผ์— ๋”ฐ๋ผ ์ฐจ์ด๊ฐ€ ๋งŽ๋‹ค.

๊ฐ์ฒด์˜ ์ƒ์‚ฌ๋ฅผ ํŒ๋ณ„ํ•˜๋Š” ๋ฐฉ์‹์„ ๊ธฐ์ค€์œผ๋กœ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ '์ฐธ์กฐ ์นด์šดํŒ… GC (์ง์ ‘ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜)'์™€ '์ถ”์  GC (๊ฐ„์ ‘ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜)'๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค. 

 

์„ธ๋Œ€ ๋‹จ์œ„ ์ปฌ๋ ‰์…˜ ์ด๋ก 

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

  1. ์•ฝํ•œ ์„ธ๋Œ€ ๊ฐ€์„ค: ๋Œ€๋‹ค์ˆ˜ ๊ฐ์ฒด๋Š” ์ผ์ฐ ์ฃฝ๋Š”๋‹ค.
  2. ๊ฐ•ํ•œ ์„ธ๋Œ€ ๊ฐ€์„ค: ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ ๊ณผ์ •์—์„œ ์‚ด์•„๋‚จ์€ ํšŸ์ˆ˜๊ฐ€ ๋Š˜์–ด๋‚ ์ˆ˜๋ก ๋” ์˜ค๋ž˜ ์‚ด ๊ฐ€๋Šฅ์„ฑ์ด ์ปค์ง„๋‹ค.

์ด ๋‘ ๊ฐ€์ •์ด ํ•ฉ์ณ์ ธ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๋“ค์— ์ผ๊ด€๋œ ์„ค๊ณ„ ์›์น™์„ ์ œ๊ณตํ•œ๋‹ค. ์ž๋ฐ” ํž™์„ ๋ช‡ ๊ฐœ์˜ ์˜์—ญ์œผ๋กœ ๋‚˜๋ˆ„๊ณ  ๊ฐ์ฒด๋“ค์„ ๋‚˜์ด์— ๋”ฐ๋ผ ๊ฐ๊ธฐ ๋‹ค๋ฅธ ์˜์—ญ์— ํ• ๋‹นํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์—ฌ๊ธฐ์„œ ๋‚˜์ด๋ž€ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์—์„œ ์‚ด์•„๋‚จ์€ ํšŸ์ˆ˜๋ฅผ ๋งํ•œ๋‹ค. ์˜์—ญ ์•ˆ์˜ ๊ฐ์ฒด ๋Œ€๋ถ€๋ถ„์ด ๊ณง๋ฐ”๋กœ ์ฃฝ์„ ์šด๋ช…์ด๋ผ๋ฉด ๊ทธ ๊ฐœ๊ฒŒ๋“ค์„ ํ•œ๋ฐ ๋ชฐ์•„๋„ฃ๊ณ  ์‚ด์•„๋‚จ๋Š” ์†Œ์ˆ˜์˜ ๊ฐ์ฒด๋ฅผ ์œ ์ง€ํ•˜๋ฉด, ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์— ๋“œ๋Š” ์ „์ฒด ์‹œ๊ฐ„๋„ ์ค„๊ณ  ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„๋„ ํšจ์œจ์ ์œผ๋กœ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์ž๋ฐ” ํž™์„ ์—ฌ๋Ÿฌ ์˜์—ญ์œผ๋กœ ๋‚˜๋ˆ„๋ฉด ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๋Š” ํ•œ ๋ฒˆ์— ํ•˜๋‚˜ ๋˜๋Š” ๋ช‡ ๊ฐœ์˜ ์˜์—ญ๋งŒ ์„ ํƒํ•ด ํšŒ์ˆ˜ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ ์ด๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋งˆ์ด๋„ˆ GC, ๋ฉ”์ด์ € GC, ์ „์ฒด GC๋กœ ๋ถ€๋ฅธ๋‹ค.

 

  • ๋ถ€๋ถ„ GC : ์ž๋ฐ” ํž™์˜ ์ผ๋ถ€๋งŒ ํšŒ์ˆ˜ํ•˜๋Š” ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์„ ๋งํ•˜๋ฉฐ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ธ๋ถ„ํ™”๋œ๋‹ค.
    • ๋งˆ์ด๋„ˆ GC(์‹ ์„ธ๋Œ€ GC) : ์‹ ์„ธ๋Œ€๋งŒ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜
    • ๋ฉ”์ด์ € GC(๊ตฌ์„ธ๋Œ€ GC) : ๊ตฌ์„ธ๋Œ€๋งŒ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜. ์ง‘ํ•„ ์‹œ์  ๊ธฐ์ค€์œผ๋กœ ์˜ค์ง CMS ์ปฌ๋ ‰ํ„ฐ๋งŒ ๊ตฌ์„ธ๋Œ€๋ฅผ ๋”ฐ๋กœ ํšŒ์ˆ˜ํ•œ๋‹ค. 
    • ํ˜ผํ•ฉ GC : ์‹ ์„ธ๋Œ€ ์ „์ฒด์™€ ๊ตฌ์„ธ๋Œ€ ์ผ๋ถ€๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜. ์ง‘ํ•„ ์‹œ์  ๊ธฐ์ค€์œผ๋กœ G1 ์ปฌ๋ ‰ํ„ฐ๋งŒ ์ด๋ ‡๊ฒŒ ๋™์ž‘ํ•œ๋‹ค.
  • ์ „์ฒด GC : ์ž๋ฐ” ํž™ ์ „์ฒด์™€ ๋ฉ”์„œ๋“œ ์˜์—ญ๊นŒ์ง€ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜

 

๋งˆํฌ-์Šค์œ• ์•Œ๊ณ ๋ฆฌ์ฆ˜

์ž‘์—…์„ ํ‘œ์‹œ(mark)์™€ ์“ธ๊ธฐ(sweep) ๋‘ ๋‹จ๊ณ„๋กœ ์ง„ํ–‰ํ•œ๋‹ค. ๋จผ์ € ํšŒ์ˆ˜ํ•  ๊ฐ์ฒด๋“ค์„ ๋ชจ๋‘ ํ‘œ์‹œํ•œ ๋‹ค์Œ, ํ‘œ์‹œ๋œ ๊ฐ์ฒด๋“ค์„ ๋‹ด๋Š”๋‹ค. ๋ฐ˜๋Œ€๋กœ ์‚ด๋ฆด ๊ฐ์ฒด์— ํ‘œ์‹œ๋˜์ง€ ์•Š์€ ๊ฐ์ฒด๋ฅผ ํšŒ์ˆ˜ํ•œ๋‹ค. 

 

๋‹จ์ 

  • ์‹คํ–‰ ํšจ์œจ์ด ์ผ์ •ํ•˜์ง€ ์•Š๋‹ค. ์ž๋ฐ” ํž™์— ๊ฐ์ฒด๊ฐ€ ๋งŽ๊ณ  ๋Œ€๋ถ€๋ถ„์ด ํšŒ์ˆ˜ ๋Œ€์ƒ์ด๋ฉด ํ‘œ์‹œํ•˜๋Š” ์ผ๊ณผ ํšŒ์ˆ˜ํ•˜๋Š” ์ผ์ด ์ปค์ง„๋‹ค. ์ฆ‰ ๊ฐ์ฒด๊ฐ€ ๋งŽ์•„์งˆ์ˆ˜๋ก ํ‘œ์‹œํ•˜๊ณ  ์“ธ์–ด ๋‹ด๋Š” ์ž‘์—…์˜ ํšจ์œจ์ด ๋–จ์–ด์ง„๋‹ค.
  • ๋ฉ”๋ชจ๋ฆฌ ํŒŒํŽธํ™”๊ฐ€ ์‹ฌํ•˜๋‹ค. ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๊ฐ€ ์“ธ๊ณ  ๊ฐ€๋ฉด ๋ถˆ์—ฐ์†์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ํŒŒํŽธ์ด ๋งŒ๋“ค์–ด์ง„๋‹ค. ํŒŒํŽธํ™”๊ฐ€ ๋„ˆ๋ฌด ์‹ฌํ•˜๋ฉด ํ”„๋กœ๊ทธ๋žจ์ด ํฐ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๋ ค ํ•  ๋•Œ ์ถฉ๋ถ„ํ•œ ํฌ๊ธฐ์˜ ์—ฐ์†๋œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฐพ๊ธฐ๊ฐ€ ์–ด๋ ค์›Œ์ง€๊ณ , ๊ทธ ๊ฒฐ๊ณผ ๋˜ ๋‹ค๋ฅธ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์„ ์œ ๋ฐœํ•œ๋‹ค.

 

๋งˆํฌ-์นดํ”ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜

๊ฐ€์šฉ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋˜‘๊ฐ™์€ ํฌ๊ธฐ์˜ ๋‘ ๋ณผ๋ก์œผ๋กœ ๋‚˜๋ˆ  ํ•œ ๋ฒˆ์— ํ•œ ๋ธ”๋ก๋งŒ ์‚ฌ์šฉํ•˜๊ณ  ํ•œ์ชฝ ๋ธ”๋ก์ด ๊ฝ‰ ์ฐจ๋ฉด ์‚ด์•„๋‚จ์€ ๊ฐ์ฒด๋“ค๋งŒ ๋‹ค๋ฅธ ๋ธ”๋ก์— ๋ณต์‚ฌํ•˜๊ณ  ๊ธฐ์กด ๋ธ”๋ก์„ ํ•œ๋ฒˆ์— ์ฒญ์†Œํ•œ๋‹ค.  ์˜ค๋Š˜๋‚  ์‚ฌ์šฉ ์ž๋ฐ” ๊ฐ€์ƒ ๋จธ์‹  ๋Œ€๋ถ€๋ถ„์€ ์‹ ์„ธ๋Œ€์— ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ™œ์šฉํ•œ๋‹ค. 

 

์žฅ์ 

  • ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๊ตฌํ˜„ํ•˜๊ธฐ ์‰ฝ๊ณ  ์‹คํ–‰ ํšจ์œจ๋„ ์ข‹๋‹ค. 

๋‹จ์ 

  • ๊ฐ€์šฉ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ ˆ๋ฐ˜์œผ๋กœ ์ค„์—ฌ ๋‚ญ๋น„๊ฐ€ ์‹ฌํ•˜๋‹ค.

 

์ฆ‰, ๊ฐ์ฒด ์ƒ์กด์œจ์ด ๋†’์„์ˆ˜๋ก ๋ณต์‚ฌํ• ๊ฒŒ ๋งŽ์•„์ ธ์„œ ํšจ์œจ์ด ๋‚˜๋น ์ง€๊ณ , ๊ณต๊ฐ„์„ ๋‚ญ๋น„ํ•˜๋Š” ๊ฒƒ์„ ๋Œ€์ฒดํ•˜๊ธฐ ์œ„ํ•ด ํ•˜๋‹น ๋ณด์ฆ์šฉ ๊ณต๊ฐ„์„ ๋งˆ๋ จํ•˜์—ฌ ๋Œ€๋‹ค์ˆ˜ ๊ฐ์ฒด๊ฐ€ ์‚ด์•„๋‚จ๋Š” ๊ทน๋‹จ์  ์ƒํ™ฉ์— ๋Œ€์ฒ˜ํ•ด์•ผ ํ•œ๋‹ค.

 

 

์•„ํŽ  ์Šคํƒ€์ผ ์ปฌ๋ ‰์…˜

ํ•ซ์ŠคํŒŸ ๊ฐ€์ƒ ๋จธ์‹ ์˜ ์‹ ์„ธ๋Œ€ ์ปฌ๋ ‰ํ„ฐ๋Š” ๋ชจ๋‘ ์‹ ์„ธ๋Œ€ ๋ฉ”๋ชจ๋ฆฌ์˜ ๋ ˆ์ด์•„์›ƒ์„ ์ด ์ „๋žต์— ๋ถ€ํ•ฉํ•˜๊ฒŒ ๊ตฌ์„ฑํ•œ๋‹ค.

์•„ํŽ  ์Šคํƒ€์ผ ์ปฌ๋ ‰์…˜ ๋ฐฉ์‹์€ ์‹ ์„ธ๋Œ€๋ฅผ ํ•˜๋‚˜์˜ ํฐ ์—๋ด ๊ณต๊ฐ„๊ณผ ๋‘ ๊ฐœ์˜ ์ž‘์€ ์ƒ์กด์ž ๊ณต๊ฐ„์œผ๋กœ ๋‚˜๋ˆ„๊ณ , ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•  ๋•Œ๋Š” ์ƒ์กด์ž ๊ณต๊ฐ„ ์ค‘ ํ•˜๋‚˜์™€ ์—๋ด๋งŒ ์‚ฌ์šฉํ•œ๋‹ค. ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์ด ์‹œ์ž‘๋˜๋ฉด ์—๋ด๊ณผ ์ƒ์กด์ž ๊ณต๊ฐ„์—์„œ ์‚ด์•„๋‚จ์€ ๊ฐ์ฒด๋“ค์€ ๋‚˜๋จธ์ง€ ์ƒ์กด์ž ๊ณต๊ฐ„์œผ๋กœ ํ•˜๋‚˜์”ฉ ๋ณต์‚ฌํ•œ ํ›„ ์—๋ด๊ณผ ์ด์ „ ์ƒ์กด์ž ๊ณต๊ฐ„์„ ๊ณง๋ฐ”๋กœ ๋น„์šด๋‹ค. ์•„ํŽ  ์Šคํƒ€์ผ ์ปฌ๋ ‰์…˜์€ ๋‚ญ๋น„ํ•˜๋Š” ๊ณต๊ฐ„์„ ๋Œ€์ฒ˜ํ•˜๊ธฐ ์œ„ํ•ด ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ๋ณด์ฆ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ถ”๊ฐ€ํ•˜์˜€๋Š”๋ฐ, ์ด ๋ฉ”์ปค๋‹ˆ์ฆ˜์€ ๋งˆ์ด๋„ˆ GC์—์„œ ์‚ด์•„๋‚จ์€ ๊ฐ์ฒด๋ฅผ ์ƒ์กด์ž ๊ณต๊ฐ„์ด ๋‹ค ์ˆ˜์šฉํ•˜์ง€ ๋ชปํ•  ๊ฒฝ์šฐ ๋‹ค๋ฅธ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ํ™œ์šฉํ•ด ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์„ ๋ณด์ฆํ•œ๋‹ค. 

 

 

๋งˆํฌ-์ปดํŒฉํŠธ ์•Œ๊ณ ๋ฆฌ์ฆ˜

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

 

๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น๊ณผ ์ ‘๊ทผ์— ๋ถ€๋‹ด์„ ๋งŽ์ด ๋”ํ•˜์ง€ ์•Š๋Š” ๋ฐฉ์‹์€ ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ, ๋ฉ”๋ชจ๋ฆฌ ํŒŒํŽธํ™”๋ฅผ ๊ฐ๋‚ดํ•˜๋ฉด์„œ ๋งˆํฌ-์Šค์œ•์„ ์‚ฌ์šฉํ•˜๋‹ค๊ฐ€, ๊ฐ์ฒด ํ• ๋‹น์— ์–‘ํ–ฅ์„ ์ค„ ๋งŒํผ ํŒŒํŽธํ™”๊ฐ€ ์‹ฌํ•ด์ง€๋ฉด ๋งˆํฌ-์ปดํŒฉํŠธ๋ฅผ ๋Œ๋ ค ์—ฐ์†๋œ ๊ณต๊ฐ„์„ ํ™•๋ณดํ•˜๋Š” ๊ฒƒ์ด๋‹ค. CMS๋Š” ๋งˆํฌ-์Šค์œ•์„ ๊ธฐ๋ณธ์œผ๋กœ ํ•˜๋ฉฐ, ๋ฉ”๋ชจ๋ฆฌ ํŒŒํŽธํ™”๊ฐ€ ์‹ฌํ•ด์ง€๋ฉด ์ด ์ „๋žต์„ ์‹คํ–‰ํ•˜์—ฌ ๋‹จ์ ์„ ๋ณด์™„ํ•œ๋‹ค.

 


 

ํ•ซ์ŠคํŒŸ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ƒ์„ธ ๊ตฌํ˜„

ํšจ์œจ์ ์ธ ๊ฐ€์ƒ ๋จธ์‹ ์„ ๋งŒ๋“ค๋ ค๋ฉด ๊ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์‹คํ–‰ ํšจ์œจ์„ ๋”ฐ์ ธ๋ด์•ผ ํ•œ๋‹ค. ๋‹ค์–‘ํ•œ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๋ฅผ ์†Œ๊ฐœํ•  ๊ฒƒ์ด๋ฉฐ, ํ•„์š”ํ•œ ๊ธฐ์ดˆ ์ง€์‹์„ ์†Œ๊ฐœํ•œ๋‹ค.

 

๋ฃจํŠธ ๋…ธ๋“œ ์—ด๊ฑฐ

'ํšจ์œจ์ ์ธ ๊ฐ€์ƒ ๋จธ์‹  ๊ตฌํ˜„ํ•˜๊ธฐ'์˜ ์ฒซ ๋ฒˆ์งธ ์˜ˆ๋กœ๋Š” ๋ฃจํŠธ ๋…ธ๋“œ ์—ด๊ฑฐ์ด๋‹ค.

  • ๋„๋‹ฌ ๊ฐ€๋Šฅ์„ฑ ๋ถ„์„ ์•Œ๊ณ ๋ฆฌ์ฆ˜์—์„œ GC ๋ฃจํŠธ ์ง‘ํ•ฉ์œผ๋กœ๋ถ€ํ„ฐ ์ฐธ์กฐ ์ฒด์ธ์„ ์ฐพ๋Š” ์ž‘์—…
  • GC ๋ฃจํŠธ๋กœ ๊ณ ์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๋…ธ๋“œ๋Š” ์ฃผ๋กœ ์ „์—ญ ์ฐธ์กฐ(์ƒ์ˆ˜์™€ ํด๋ž˜์Šค ์ •์  ์†์„ฑ ๋“ฑ)์™€ ์‹คํ–‰ ์ฝ˜ํ…์ŠคํŠธ(์Šคํƒ ํ”„๋ ˆ์ž„์˜ ์ง€์—ญ ๋ณ€์ˆ˜ ํ…Œ์ด๋ธ” ๋“ฑ)์— ์กด์žฌํ•œ๋‹ค.

์˜ค๋Š˜ ๋‚ ์˜ ์ž๋ฐ” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๊ฑฐ๋Œ€ํ•ด์ง€๊ณ  ์žˆ์–ด, ๋ชจ๋“  ์ฐธ์กฐ๋ฅผ ํ™•์ธํ•˜๋ ค๋ฉด ์‹œ๊ฐ„์ด ๋งŽ์ด ์†Œ์š”๋œ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€ ๋ชจ๋“  ์ปฌ๋ ‰ํ„ฐ๋Š” ๋ฃจํŠธ ๋…ธ๋“œ ์—ด๊ฑฐ ๋‹จ๊ณ„์—์„œ ์‚ฌ์šฉ์ž ์Šค๋ ˆ๋“œ๋ฅผ ์ผ์‹œ ์ •์ง€ํ•ด์•ผ ํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ ํ˜„์žฌ ๋„๋‹ฌ ๊ฐ€๋Šฅ์„ฑ ๋ถ„์„ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ฐธ์กฐ ์ฒด์ธ ์ฐพ๊ธฐ ๊ณผ์ •์—์„œ ๊ฐ€์žฅ ์˜ค๋ž˜ ๊ฑฐ๋ฆฌ๋Š” ์ž‘์—…์€ ๋‹คํ–‰ํžˆ๋„ ์‚ฌ์šฉ์ž ์Šค๋ ˆ๋“œ์™€ ๋™์‹œ์— ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‹จ, ๋ฐ˜๋“œ์‹œ ์ผ๊ด€์„ฑ์ด ๋ณด์žฅ๋˜๋Š” ์Šค๋ƒ…์ˆ ์ƒํƒœ์—์„œ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ์˜ ์ผ๊ด€์„ฑ์ด๋ž€ ์—ด๊ฑฐ ์ž‘์—…์ด ์ง„ํ–‰๋˜๋Š” ๋™์•ˆ ๋ฃจํŠธ ๋…ธ๋“œ๋“ค์˜ ์ฐธ์กฐ ๊ด€๊ณ„๊ฐ€ ๋ณ€ํ•˜์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค. ํ˜„์žฌ ์ฃผ๋ฅ˜ ์ž๋ฐ” ๊ฐ€์ƒ ๋จธ์‹ ๋“ค์€ '์ •ํ™•ํ•œ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์„ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ์ด๋Š” ์ •ํ™•ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๊ธฐ์ˆ ์„ ์ ์šฉํ•œ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์„ ๋งํ•œ๋‹ค. ์‚ฌ์šฉ์ž ์Šค๋ ˆ๋“œ๊ฐ€ ์ •์ง€ํ•œ ํ›„ ์‹คํ–‰ ์ฝ˜ํ…์ŠคํŠธ์™€ ์ „์—ญ ์ฐธ์กฐ์˜ ์œ„์น˜๋ฅผ ๋น ์ง์—†์ด ํ™•์ธํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค. ๊ทธ ๋Œ€์‹  ๊ฐ€์ƒ ๋จธ์‹ ์ด ๊ฐ์ฒด ์ฐธ์กฐ๊ฐ€ ์ €์žฅ๋œ ์œ„์น˜๋ฅผ ์ง์ ‘ ์•Œ์•„๋‚ผ ๋ฐฉ๋ฒ•์ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.

 

ํ•ซ์ŠคํŒŸ์€ 0opMap ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์ด์šฉํ•ด ํด๋ž˜์Šค ๋กœ๋”ฉ์ด ์™„๋ฃŒ๋˜๋ฉด ๊ฐ์ฒด์— ํฌํ•จ๋œ ๊ฐ ๋ฐ์ดํ„ฐ์˜ ํƒ€์ž…์„ ํ™•์ธํ•œ ํ›„, JIT ์ปดํŒŒ์ผ ๊ณผ์ •์—์„œ ์Šคํƒ์˜ ์–ด๋Š ์œ„์น˜์™€ ์–ด๋Š ๋ ˆ์ง€์Šคํ„ฐ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์ฐธ์กฐ์ธ์ง€ ๊ธฐ๋กํ•˜์—ฌ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค. ์ปฌ๋ ‰ํ„ฐ๋Š” ๋ฉ”์„œ๋“œ ์˜์—ญ๊ณผ ๋‹ค๋ฅธ GC ๋ฃจํŠธ๋“ค์„ ์ถ”์ ํ•ด๋ณด์ง€ ์•Š๊ณ  ์Šค์บ” ๊ณผ์ •์—์„œ ์ด ์ •๋ณด๋ฅผ ์ง์ ‘ ์–ป์–ด๋‚ธ๋‹ค.

 

 

์•ˆ์ „ ์ง€์ 

ํ•ซ์ŠคํŒŸ์€ 0opMap์„ ํ™œ์šฉํ•˜์—ฌ GC ๋ฃจํŠธ๋“ค์„ ๋น ๋ฅด๊ณ  ์ •ํ™•ํ•˜๊ฒŒ ์—ด๊ฑฐํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์ฐธ์กฐ ๊ด€๊ณ„๋‚˜ 0opMap์˜ ๋‚ด์šฉ์„ ๋ณ€๊ฒฝํ• ์ˆ˜ ์žˆ๋Š” ๋ช…๋ น์–ด๊ฐ€ ๋งŽ์œผ๋ฉด, ๋ช…๋ น์–ด ๋ชจ๋‘ 0opMap์„ ๋งŒ๋“ค์–ด ๋†“์œผ๋ฉด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋” ๋งŽ์ด ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ํ•ซ์ŠคํŒŸ์€ ๋ชจ๋“  ๋ช…๋ น์–ด ๊ฐ๊ฐ์— 0opMap์„ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ  ์•ˆ์ „ ์ง€์ ์ด๋ผ๊ณ  ํ•˜๋Š” ํŠน์ •ํ•œ ์œ„์น˜์—๋งŒ ๊ธฐ๋กํ•œ๋‹ค. ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๋Š” ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์ด ์•ˆ์ „ ์ง€์ ์— ๋„๋‹ฌํ•  ๋•Œ๊นŒ์ง€๋Š” ์ ˆ๋Œ€ ๋ฉˆ์ถ”์ง€ ์•Š๋Š”๋‹ค. ๋”ฐ๋ผ์„œ ์•ˆ์  ์ง€์ ์„ ๋„ˆ๋ฌด ์ ๊ฒŒ ์„ค์ •ํ•ด์„œ ์ปฌ๋ ‰ํ„ฐ๊ฐ€ ๋„ˆ๋ฌด ์˜ค๋ž˜ ๊ธฐ๋‹ค๋ฆฌ๊ฒŒ ํ•˜๊ฑฐ๋‚˜, ๋ฐ˜๋Œ€๋กœ ๋„ˆ๋ฌด ๋งŽ์ด ์„ค์ •ํ•ด์„œ ๋Ÿฐํƒ€์ž„ ๋ฉ”๋ชจ๋ฆฌ ๋ถ€ํ•˜๊ฐ€ ์ปค์ง€์ง€ ์•Š๋„๋ก ์ฃผ์˜ํ•ด์•ผ ํ•œ๋‹ค.

 

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

 

๋˜ํ•œ ์ถ”๊ฐ€์ ์œผ๋กœ ์•ˆ์ „ ์ง€์ ๊ณผ ๊ด€๋ จํ•˜์—ฌ ๊ณ ๋ คํ•ด์•ผ ํ•  ๋ฌด๋„ค๋Š” ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์ด ์‹œ์ž‘๋˜๋ฉด JNI ํ˜ธ์ถœ์„ ์‹คํ–‰ ์ค‘์ธ ์Šค๋ ˆ๋“œ๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ์Šค๋ ˆ๋“œ๊ฐ€ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์•ˆ์ „ ์ง€์ ๊นŒ์ง€ ์‹คํ–‰ํ•˜๊ณ  ๋ฉˆ์ถ”๊ฒŒ ํ•  ๋ฐฉ๋ฒ•์ด ํ•„์š”ํ•œ๋ฐ, ์„ ์ œ์  ๋ฉˆ์ถค๊ณผ ์ž๋ฐœ์  ๋ฉˆ์ถค์ด ์žˆ๋‹ค.

 

์„ ์ œ์  ๋ฉˆ์ถค(preemptive suspension)

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

์ž๋ฐœ์  ๋ฉˆ์ถค(voluntary suspension)

  • ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๊ฐ€ ์Šค๋ ˆ๋“œ ์ˆ˜ํ–‰์— ์ง์ ‘ ๊ด€์—ฌํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ํ”Œ๋ ˆ๊ทธ ๋น„ํŠธ๋ฅผ ์„ค์ •ํ•˜๊ณ , ๊ฐ ์Šค๋ ˆ๋“œ๊ฐ€ ์‹คํ–‰ ์ค‘์— ํ”Œ๋ž˜๊ทธ๋ฅผ ์ ๊ทน์ ์œผ๋กœ ํด๋ง ํ•œ๋‹ค. ํ”Œ๋ž˜๊ทธ ๊ฐ’์ด true ์ด๋ฉด ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์•ˆ์ „ ์ง€์ ์—์Šค ์Šค์Šค๋กœ ๋ฉˆ์ถ˜๋‹ค.
  • ํด๋ง ํ”Œ๋ž˜๊ทธ๋“ค์€ ์•ˆ์ „ ์ง€์ ์— ์œ„์น˜ํ•œ๋‹ค.
  • ๊ฐ์ฒด ์ƒ์„ฑ ๋“ฑ ์ž๋ฐ” ํž™ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์†Œ๋น„ํ•˜๋Š” ์žฅ์†Œ์—๋„ ํด๋ง ํ”Œ๋ž˜๊ทธ๊ฐ€ ์ถ”๊ฐ€๋œ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•ด ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ํ• ๋‹นํ•˜์ง€ ๋ชปํ•˜๋Š” ์ผ์„ ์˜ˆ๋ฐฉํ•˜๊ธฐ ์œ„ํ•ด ์ ์ ˆํ•œ ์‹œ์ ์— ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•จ์ด๋‹ค.
  • ํด๋ง์€ ์ฝ”๋“œ์—์„œ ์ž์ฃผ ์ผ์–ด๋‚˜๋ฏ€๋กœ ํšจ์œจ์  ์ด์—ฌ์•ผ ํ•œ๋‹ค. ํ•ซ์ŠคํŒŸ์€ ๋ฉ”๋ชจ๋ฆฌ ๋ณดํ˜ธ ํŠธ๋žฉ์ด๋ผ๋Š” ๋ฐฉ๋ฒ•์„ ์จ์„œ ์–ด์…ˆ๋ธ”๋ฆฌ ๋ช…๋ น์•„ ํ•˜๋‚˜๋งŒ์œผ๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋‹จ์ˆœํ™”ํ–ˆ๋‹ค.

 

์•ˆ์ „ ์ง€์—ญ

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

 

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

 

 

๊ธฐ์–ต ์ง‘ํ•ฉ๊ณผ ์นด๋“œ ํ…Œ์ด๋ธ”

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

  • ์นด๋“œ ์ •๋ฐ€๋„
    • ๋ ˆ์ฝ”๋“œ ํ•˜๋‚˜(์นด๋“œ)๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ๋ธ”๋ก ํ•˜๋‚˜์— ๋งคํ•‘๋œ๋‹ค. ํŠน์ • ๋ ˆ์ฝ”๋“œ๊ฐ€ ๋งˆํ‚น๋˜์–ด ์žˆ๋‹ค๋ฉด, ํ•ด๋‹น ๋ธ”๋ก์— ์„ธ๋Œ€ ๊ฐ„ ์ฐธ์กฐ๋ฅผ ์ง€๋‹Œ ๊ฐ์ฒด๊ฐ€ ์กด์žฌํ•œ๋‹ค๋Š” ๋œป์ด๋‹ค.

๊ธฐ์–ต ์ง‘ํ•ฉ์€ ์‚ฌ์‹ค '์ถ”์ƒ' ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋‹ค. ์นด๋“œ ์ •๋ฐ€๋„๋กœ ๊ธฐ์–ต ์ง‘ํ•ฉ์„ ๊ตฌํ˜„ํ•œ ๊ฒƒ์„ ์นด๋“œ ํ…Œ์ด๋ธ”์ด๋ผ ํ•œ๋‹ค. ์นด๋“œ ํ…Œ์ด๋ธ”์€ ๊ธฐ๋ก ์ •๋ฐ€๋„์™€ ํž™ ๋ฉ”๋ชจ๋ฆฌ์˜ ๋งคํ•‘ ๊ด€๊ณ„ ๋“ฑ์„ ์ •์˜ํ•˜์—ฌ ๊ธฐ์–ต ์ง‘ํ•ฉ์„ ๊ตฌ์ฒด์ ์œผ๋กœ ๊ตฌํ˜„ํ•œ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋‹ค. ์นด๋“œ ํŽ˜์ด์ง€ ํ•˜๋‚˜์˜ ๋ฉ”๋ชจ๋ฆฌ์—๋Š” ๋ณดํ†ต ํ•˜๋‚˜ ์ด์ƒ์˜ ๊ฐ์ฒด๊ฐ€ ๋“ค์–ด ์žˆ๋‹ค. ์ด ๊ฐ์ฒด๋“ค ์ค‘ ํ•˜๋‚˜๋ผ๋„ ์„ธ๋Œ€ ๊ฐ„ ํฌ์ธํ„ฐ๋ฅผ ๊ฐ–๋Š” ํ•„๋“œ๊ฐ€ ์žˆ๋‹ค๋ฉด, ์นด๋“œ ํ…Œ์ด๋ธ”์—์„œ์˜ ํ•ด๋‹น ์›์†Œ๋ฅผ 1๋กœ ํ‘œ์‹œํ•˜๊ณ , ๊ทธ ์›์†Œ๋Š” ๋”๋Ÿฝํ˜€์กŒ๋‹ค๋ผ๊ณ  ๋งํ•œ๋‹ค. ์„ธ๋Œ€ ๊ฐ„ ํฌ์ธํ„ฐ๋ฅผ ๊ฐ–๋Š” ๊ฐ์ฒด๊ฐ€ ํ•˜๋‚˜๋„ ์—†๋‹ค๋ฉด 0์œผ๋กœ ํ‘œ์‹œ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฐ์ฒด๋ฅผ ํšŒ์ˆ˜ํ•  ๋•Œ๋Š” ์นด๋“œ ํ…Œ์ด๋ธ”์—์„œ ๋”๋Ÿฝํ˜€์ง„ ์›์†Œ๋งŒ ํ™•์ธํ•˜๋ฉด ์–ด๋–ค ์นด๋“œ ํŽ˜์ด์ง€์˜ ๋ฉ”๋ชจ๋ฆฌ ๋ธ”๋ก์ด ์„ธ๋Œ€ ๊ฐ„ ํฌ์ธํ„ฐ๋ฅผ ํฌํ•จํ•˜๋Š”์ง€ ์‰ฝ๊ฒŒ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿฐ ์‹์œผ๋กœ ์„ธ๋Œ€ ๊ฐ„ ์ฐธ์กฐ๋ฅผ ํฌํ•จํ•œ ๋ธ”๋ก๋งŒ GC ๋ฃจํŠธ์— ์ถ”๊ฐ€ํ•ด ํ•จ๊ป˜ ์Šค์บ”ํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ๊ธฐ์–ต ์ง‘ํ•ฉ์„ ์ด์šฉํ•ด GC ๋ฃจํŠธ์˜ ์Šค์บ” ๋ฒ”์œ„๋ฅผ ์ค„์ด๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค.

 

 

์“ฐ๊ธฐ ์žฅ๋ฒฝ

์นด๋“œ ํ…Œ์ด๋ธ”์˜ ์›์†Œ๋Š” ๋‹ค๋ฅธ ์„ธ๋Œ€์˜ ๊ฐ์ฒด๊ฐ€ ํ˜„ ๋ธ”๋ก ์•ˆ์˜ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•˜๋ฉด ์นด๋“œ ํ…Œ์ด๋ธ”์˜ ํ•ด๋‹น ์›์†Œ๋Š” ๋”๋Ÿฝํ˜€์ง„๋‹ค. ๋”๋Ÿฝํ˜€์ง€๋Š” ์‹œ์ ์€ ์ฐธ์กฐ ํƒ€์ž… ํ•„๋“œ์— ๊ฐ’์ด ๋Œ€์ž…๋˜๋Š” ์ˆœ๊ฐ„์ด๋‹ค.

ํ•ซ์ŠคํŒŸ ๊ฐ€์ƒ ๋จธ์‹ ์€ ์“ฐ๊ธฐ ์žฅ๋ฒฝ ๊ธฐ์ˆ ์„ ์ด์šฉํ•ด ์นด๋“œ ํ…Œ์ด๋ธ”์„ ๊ด€๋ฆฌํ•œ๋‹ค.

  • ์ฝ๊ธฐ ์žฅ๋ฒฝ์€ ๋™์‹œ ๋น„์ˆœ์ฐจ ์‹คํ–‰ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ ์žฅ๋ฒฝ ๊ธฐ์ˆ ์ด๋‹ค. 
  • ์“ฐ๊ธฐ ์žฅ๋ฒฝ์€ ๊ฐ€์ƒ ๋จธ์‹  ์ˆ˜์ค€์—์„œ '์ฐธ์กฐ ํƒ€์ž… ํ•„๋“œ ๋Œ€์ž…'์‹œ ๋ผ์–ด๋“œ๋Š” AOP ์• ์ŠคํŒฉํŠธ(aspect)์— ๋น„์œ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฐธ์กฐํƒ€์ž…์— ๊ฐ์ฒด๊ฐ€ ๋Œ€์ž…๋˜๋ฉด ์–ด๋ผ์šด๋“œ ์–ด๋“œ๋ฐ”์ด์Šค๊ฐ€ ์ƒ์„ฑ๋˜์–ด, ๋Œ€์ž… ์ „ํ›„๋กœ ์ถ”๊ฐ€ ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค. ์ด๋Ÿฐ ๊ธฐ๋Šฅ ๋ชจ๋‘๋ฅผ ์“ฐ๊ธฐ ์žฅ๋ฒฝ์œผ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋Œ€์ž… ์ „ ์“ฐ๊ธฐ ์žฅ๋ฒฝ์„ ์‚ฌ์ „ ์“ฐ๊ธฐ ์žฅ๋ฒฝ์ด๋ผ ํ•˜๋ฉฐ, ๋Œ€์ž… ํ›„ ์“ฐ๊ธฐ ์žฅ๋ฒฝ์„ ์‚ฌํ›„ ์“ฐ๊ธฐ ์žฅ๋ฒฝ์ด๋ผ ํ•œ๋‹ค. ํ•ซ์ŠคํŒŸ ๊ฐ€์ƒ ๋จธ์‹ ์˜ ์ปฌ๋ ‰ํ„ฐ ๋‹ค์ˆ˜๊ฐ€ ์“ฐ๊ธฐ ์žฅ๋ฒฝ์„ ์ด์šฉํ•œ๋‹ค. 
  • ์“ฐ๊ธฐ ์žฅ๋ฒฝ์„ ์ ์šฉํ•˜๋ฉด ๊ฐ€์ƒ ๋จธ์‹ ์€ ์ถ”๊ฐ€๋กœ ์‹คํ–‰ํ•  ๋ช…๋ น์–ด๋ฅผ ์ƒ์„ฑํ•ด ๋Œ€์ž… ์—ฐ์‚ฐ ๋ชจ๋‘์— ์ถ”๊ฐ€ํ•œ๋‹ค. ์ปฌ๋ ‰ํ„ฐ๊ฐ€ ์“ฐ๊ธฐ ์žฅ๋ฒฝ์œผ๋กœ ์นด๋“œ ํ…Œ์ด๋ธ” ๊ฐฑ์‹  ์—ฐ์‚ฐ์„ ์ถ”๊ฐ€ํ•œ๋‹ค๋ฉด ์ฐธ์กฐ๊ฐ€ ๊ฐฑ์‹ ๋  ๋•Œ๋งˆ๋‹ค ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋”ํ•ด์ง„๋‹ค.
  • ์นด๋“œ ํ…Œ์ด๋ธ”์€ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ๊ฑฐ์ง“ ๊ณต์œ (false sharing) ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.
    • ๊ฑฐ์ง“ ๊ณต์œ (false sharing)
      • ๊ฑฐ์ง“ ๊ณต์œ ๋Š” ๋‚ฎ์€ ์ˆ˜์ค€์—์„œ ๋™์‹œ์„ฑ์„ ๋‹ค๋ฃฐ  ๋•Œ ๊ณ ๋ คํ•ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ๋‹ค. CPU์˜ ์บ์‹œ ์‹œ์Šคํ…œ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์บ์‹œ ๋ผ์ธ ๋‹จ์œ„๋กœ ๊ด€๋ฆฌํ•œ๋‹ค. ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅธ ๋ณ€์ˆ˜๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ์ƒํ™ฉ์—์„œ ๊ทธ ๋ณ€์ˆ˜๋“ค์ด ๊ฐ™์€ ์บ์‹œ ๋ผ์ธ์— ์ €์žฅ๋˜์–ด ์žˆ๋‹ค๋ฉด ๋ผ์ดํŠธ๋ฐฑ(write back), ๋ฌดํšจํ™”, ๋™๊ธฐํ™” ๋“ฑ์˜ ์ž‘์—… ์‹œ ์„œ๋กœ ์˜ํ–ฅ์„ ์ฃผ์–ด ์„ฑ๋Šฅ์„ ๋–จ์–ด๋œจ๋ฆฐ๋‹ค. ์‹ค์ œ๋กœ ๊ณต์œ ํ•˜๊ณ  ์žˆ์ง€ ์•Š์Œ์—๋„ ๋งˆ์น˜ ๊ณต์œ ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์„œ๋กœ ์˜ํ–ฅ์„ ์ค€๋‹ค๊ณ  ํ•˜์—ฌ ์ด๋ฅผ ๊ฑฐ์ง“ ๊ณต์œ  ๋ฌธ์ œ๋ผ๊ณ  ํ•œ๋‹ค.
  • JDK 7๋ถ€ํ„ฐ ํ•ซ์ŠคํŒŸ ๊ฐ€์ƒ ๋จธ์‹ ์€ -XX:+UserCondCrdMark ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์นด๋“œ ํ…Œ์ด๋ธ” ๊ฐฑ์‹  ์‹œ ์กฐ๊ฑด์„ ํŒ๋‹จํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค. ์ด ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•˜๋ฉด ์กฐ๊ฑด์„ ํŒ๋‹จํ•˜๋Š” ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋”ํ•ด์ง€์ง€๋งŒ, ๊ฑฐ์ง“ ๊ณต์œ  ๋ฌธ์ œ๋Š” ํ”ผํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋™์‹œ ์ ‘๊ทผ ๊ฐ€๋Šฅ์„ฑ ๋ถ„์„

ํ˜„์žฌ ์ฃผ๋ฅ˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๋“ค์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋„๋‹ฌ ๊ฐ€๋Šฅ์„ฑ ๋ถ„์„ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์จ์„œ ๊ฐ์ฒด์˜ ์ƒ์‚ฌ๋ฅผ ํŒ๋‹จํ•œ๋‹ค. ์ด๋ก ์ ์œผ๋กœ ๋„๋‹ฌ ๊ฐ€๋Šฅ์„ฑ ๋ถ„์„ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ผ๊ด€์„ฑ์ด ๋ณด์žฅ๋˜๋Š” ์Šค๋ƒ…์ˆ ์ƒํƒœ์—์„œ, ์ฆ‰ ์‚ฌ์šฉ์ž ์Šค๋ ˆ๋“œ๋Š” ๋ถ„์„ ๊ณผ์ • ์ค‘ ๋ฉˆ์ถฐ์žˆ๋Š” ์ƒํƒœ์—์„œ ์ „์ฒด ๊ณผ์ •์„ ์ง„ํ–‰ํ•ด์•ผ ํ•œ๋‹ค. 

๋ฃจํŠธ ๋…ธ๋“œ ์—ด๊ฑฐ๊ฐ€ ๋๋‚˜๋ฉด ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๋Š” GC ๋ฃจํŠธ๋กœ๋ถ€ํ„ฐ ๊ฐ์ฒด ๊ทธ๋ž˜ํ”„๋ฅผ ํƒ์ƒ‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด ๋‹จ๊ณ„์˜ ์ผ์‹œ ์ •์ง€ ์‹œ๊ฐ„์€ ์ž๋ฐ” ํž™ ํฌ๊ธฐ์— ๋น„๋ก€ํ•œ๋‹ค. ํž™์ด ํด์ˆ˜๋ก ๋” ๋งŽ์€ ๊ฐ์ฒด๋ฅผ ๋‹ด๊ฒŒ ๋˜๊ณ  ๊ฐ์ฒด ๊ทธ๋ž˜ํ”„ ๊ตฌ์กฐ๋„ ๋ณต์žกํ•ด์ง„๋‹ค. 

์ฐธ์กฐ ๊ด€๊ณ„๋ฅผ ์ถ”์ ํ•˜๋Š” ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜๋“ค์—๋Š” ๊ณตํ†ต์ ์œผ๋กœ 'ํ‘œ์‹œ'๋‹จ๊ณ„๊ฐ€ ๋“ฑ์žฅํ•œ๋‹ค. ํ‘œ์‹œ ๋‹จ๊ณ„์˜ ์ผ์‹œ ์ •์ง€ ์‹œ๊ฐ„์ด ํž™ ํฌ๊ธฐ์— ๋น„๋ก€ํ•ด ์ฆ๊ฐ€ํ•œ๋‹ค๋ฉด ๊ฑฐ์˜ ๋ชจ๋“  ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ์— ์•…์˜ํ–ฅ์„ ์ค€๋‹ค. ์ฆ‰, ์ด ๋‹จ๊ณ„์˜ ์ผ์‹œ ์ •์ง€ ์‹œ๊ฐ„์„ ์ค„์ด๋ฉด ์ˆœ์˜ํ–ฅ์„ ์ค€๋‹ค.

 

 

์‚ผ์ƒ‰ ํ‘œ์‹œ(tri-color marking)

๊ฐ์ฒด ๊ทธ๋ž˜ํ”„๋ฅผ ์—ฌํ–‰ํ•˜๋Š” ๊ณผ์ •์—์„œ ๋งˆ์ฃผ์น˜๋Š” ๊ฐ์ฒด๋“ค์— '๋ฐฉ๋ฌธํ•œ ๊ฐ์ฒด'์ธ๊ฐ€ ๋ผ๋Š” ์กฐ๊ฑด์— ๋”ฐ๋ผ ์•„๋ž˜ ์„ธ ๊ฐ€์ง€ ์ƒ‰ ์ค‘ ํ•˜๋‚˜๋ฅผ ์น ํ•˜๋Š” ๊ธฐ๋ฒ•์ด๋‹ค.

  • ํฐ์ƒ‰: ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๊ฐ€ ๋ฐฉ๋ฌธํ•œ ์  ์—†๋Š” ๊ฐ์ฒด์ธ ๊ฒฝ์šฐ. ๋„๋‹ฌ ๊ฐ€๋Šฅ์„ฑ ๋ถ„์„์„ ์‹œ์ž‘ํ•˜๋ฉด ๋ชจ๋“  ๊ฐ์ฒด๋Š” ํฐ์ƒ‰์ด๋‹ค. ๋ถ„์„์„ ๋งˆ์นœ ๋’ค์—๋„ ํฐ์ƒ‰์ธ ๊ฐ์ฒด๋Š” ๋„๋‹ฌ ๋ถˆ๊ฐ€๋Šฅํ•จ์„ ๋œปํ•œ๋‹ค.
  • ๊ฒ€์€์ƒ‰: ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๊ฐ€ ๋ฐฉ๋ฌธํ•œ ์ ์ด ์žˆ์œผ๋ฉฐ, ์ด ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ชจ๋“  ์ฐธ์กฐ๋ฅผ ์Šค์บ”ํ–ˆ๋‹ค. ์Šค์บ”๋˜์—ˆ๊ณ , ์ƒ์กดํ•˜๋ฉด ๊ฒ€์€ ๊ฐ์ฒด๊ฐ€ ๋œ๋‹ค. ๋‹ค๋ฅธ ๊ฐ์ฒด์—์„œ ๊ฒ€์€ ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ฐธ์กฐ๊ฐ€ ์žˆ๋‹ค๋ฉด ๋‹ค์‹œ ์Šค์บ”ํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค. ๊ฒ€์€ ๊ฐ์ฒด๊ฐ€ ํฐ ๊ฐ์ฒด๋ฅผ ๋ฐ”๋กœ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฑด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. ํšŒ์ƒ‰ ๊ฐ์ฒด๋ฅผ ๊ฑฐ์ณ ๊ฐ€๋ฆฌํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.
  • ํšŒ์ƒ‰: ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๊ฐ€ ๋ฐฉ๋ฌธํ•œ ์  ์žˆ์œผ๋‚˜, ์ด ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ฐธ์กฐ ์ค‘ ์Šค์บ”์„ ์™„๋ฃŒํ•˜์ง€ ์•Š์€ ์ฐธ์กฐ๊ฐ€ ์กด์žฌํ•œ๋‹ค.

์‚ผ์ƒ‰ ํ‘œ์‹œ ๊ธฐ๋ฒ•์˜ ์žฅ์ 

  • ์ธํฌ๋ฆฌ๋ฉ˜ํ„ธ(Incremental) GC ๊ฐ€๋Šฅ
    • ์ „์ฒด ํ”„๋กœ๊ทธ๋žจ์„ ๋ฉˆ์ถ”์ง€ ์•Š๊ณ (Stop-the-world ์ตœ์†Œํ™”) ์ ์ง„์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋ณ‘๋ ฌ(Concurrent) GC ๊ฐ€๋Šฅ
    • ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ์—์„œ ๋ณ‘๋ ฌ๋กœ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์ด ๊ฐ€๋Šฅํ•ด์„œ ์„ฑ๋Šฅ์ด ์ข‹์•„์ง„๋‹ค.
  • ์•ˆ์ „์„ฑ(Safety) ํ™•๋ณด
    • ํ‘์ƒ‰(Black) ๊ฐ์ฒด๊ฐ€ ํฐ์ƒ‰(White) ๊ฐ์ฒด๋ฅผ ์ง์ ‘ ์ฐธ์กฐํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์—†์Œ → ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ ์ค‘ ๋ฉ”๋ชจ๋ฆฌ ์ •ํ•ฉ์„ฑ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋งŒ์•ฝ ์‚ฌ์šฉ์ž ์Šค๋ ˆ๋“œ์™€ ์ปฌ๋ ‰ํ„ฐ๊ฐ€ ๋™์‹œ์— ์‹คํ–‰๋˜๋ฉด, ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ์ 

  1. ์ฃฝ์€ ๊ฐ์ฒด๋ฅผ ์‚ด์•˜๋‹ค๊ณ , ์ž˜๋ชป ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ๋‹ค.
  2. ์‚ด์•„ ์žˆ๋Š” ๊ฐ์ฒด๋ฅผ ์ฃฝ์—ˆ๋‹ค๊ณ  ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ๋‹ค. ์น˜๋ช…์ ์ด๋ฉฐ, ํ”„๋กœ๊ทธ๋žจ ์˜ค๋ฅ˜๋กœ ์ด์–ด์ง„๋‹ค.

 

์•„๋ž˜ ๋‘ ์กฐ๊ฑด์ด ๋™์‹œ์— ๋งŒ์กฑ๋  ๋•Œ๋งŒ ๊ฐ์ฒด ์‚ฌ๋ผ์ง ๋ฌธ์ œ๊ฐ€ ๋‚˜ํƒ€๋‚œ๋‹ค.

  • ์‚ฌ์šฉ์ž ์Šค๋ ˆ๋“œ๊ฐ€ ํฐ์ƒ‰ ๊ฐ์ฒด๋กœ์˜ ์ƒˆ๋กœ์šด ์ฐธ์กฐ๋ฅผ ๊ฒ€์€์ƒ‰ ๊ฐ์ฒด์— ์ถ”๊ฐ€
  • ์‚ฌ์šฉ์ž ์Šค๋ ˆ๋“œ๊ฐ€ ํšŒ์ƒ‰ ๊ฐ์ฒด์—์„œ ํฐ์ƒ‰ ๊ฐ์ฒด๋กœ์˜ ์ง๊ฐ„์ ‘์ ์ธ ์ฐธ์กฐ๋ฅผ ์‚ญ์ œ

๋™์‹œ ์Šค์บ” ๋„์ค‘ ๊ฐ์ฒด ์‚ฌ๋ผ์ง ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด ๋‘ ์กฐ๊ฑด ์ค‘ ํ•˜๋‚˜๋งŒ ๋งŒ์กฑํ•˜๋ฉด ๋œ๋‹ค. 

ํ•ด๋ฒ•์€ ์ฆ๋ถ„ ์—…๋ฐ์ดํŠธ์™€ ์‹œ์ž‘ ๋‹จ๊ณ„ ์Šค๋ƒ…์ˆ(snapshot at the beginning)์ด ์žˆ๋‹ค.

 

  • ์ฆ๋ถ„ ์—…๋ฐ์ดํŠธ (Incremental Update)
    • ๊ฒ€์€์ƒ‰ ๊ฐ์ฒด์— ํฐ์ƒ‰ ๊ฐ์ฒด๋กœ์˜ ์ฐธ์กฐ๊ฐ€ ์ถ”๊ฐ€๋˜๋ฉด ์ƒˆ๋กœ ์ถ”๊ฐ€๋œ ์ฐธ์กฐ๋ฅผ ๋”ฐ๋กœ ๊ธฐ๋กํ•ด ๋‘์–ด, ๋™์‹œ ์Šค์บ”์ด ๋๋‚œ ํ›„ ๊ธฐ๋กํ•ด ๋‘” ๊ฒ€์€์ƒ‰ ๊ฐ์ฒด๋“ค์„ ๋ฃจํŠธ๋กœ ํ•˜์—ฌ ๋‹ค์‹œ ์Šค์บ”ํ•œ๋‹ค. 
    • GC๊ฐ€ ๋ฃจํŠธ ๊ฐ์ฒด(root set)๋ถ€ํ„ฐ ์ ์ง„์ ์œผ๋กœ ๊ฐ์ฒด ๊ทธ๋ž˜ํ”„๋ฅผ ํƒ์ƒ‰ํ•˜๋ฉด์„œ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ฐฉ์‹.
    • ํƒ์ƒ‰ ์ค‘์—๋„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๊ฐ์ฒด์˜ ์ฐธ์กฐ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Œ, ๊ทธ๋ž˜์„œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ฆ‰์‹œ ๋ฐ˜์˜ํ•ด์•ผ ํ•จ.
    • ์ด๋ฅผ ์œ„ํ•ด Write Barrier(์“ฐ๊ธฐ ๋ฐฉ๋ฒฝ) ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ƒˆ๋กœ์šด ์ฐธ์กฐ๋ฅผ ์ฆ‰์‹œ ํšŒ์ƒ‰(Gray)์œผ๋กœ ๋ณ€๊ฒฝํ•จ.
    • ์žฅ์ :
      • Stop-the-world ์‹œ๊ฐ„์„ ์ค„์ผ ์ˆ˜ ์žˆ์Œ (์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ GC๊ฐ€ ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰ ๊ฐ€๋Šฅ).
      • ์ตœ์‹  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊ณ„์† ๋ฐ˜์˜ํ•˜๋ฏ€๋กœ ๋” ์ ์€ ๊ฐ€๋น„์ง€๊ฐ€ ๋– ๋‹ค๋‹˜(Floating Garbage ๊ฐ์†Œ).
  • ์‹œ์ž‘ ๋‹จ๊ณ„ ์Šค๋ƒ…์ˆ (Snapshot at the Beginning, SATB)
    • ํšŒ์ƒ‰ ๊ฐ์ฒด๊ฐ€ ํฐ์ƒ‰ ๊ฐ์ฒดํ˜ธ์˜ ์ฐธ์กฐ ๊ด€๊ณ„๋ฅผ ๋Š์œผ๋ ค ํ•˜๋ฉด ๊ทธ ์‚ฌ์‹ค์„ ๊ธฐ๋กํ•˜๋ฉฐ, ๋™์‹œ ์Šค์บ”์ด ๋๋‚œ ํ›„ ๊ธฐ๋กํ•ด ๋‘” ํšŒ์ƒ‰ ๊ฐ์ฒด๋“ค์„ ๋ฃจํŠธ๋กœ ํ•˜์—ฌ ๋‹ค์‹œ ์Šค์บ”ํ•œ๋‹ค.  
    • GC๊ฐ€ ๋งˆํ‚น์„ ์‹œ์ž‘ํ•˜๋Š” ์ˆœ๊ฐ„์˜ ๊ฐ์ฒด ๊ทธ๋ž˜ํ”„ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๋Š” ๋ฐฉ์‹.
    • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋งˆํ‚น ์ค‘์— ์ฐธ์กฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๋”๋ผ๋„, ๋งˆํ‚น ์‹œ์ž‘ ์‹œ์ ์˜ ์ฐธ์กฐ ์ƒํƒœ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๊ฐ€๋น„์ง€๋ฅผ ํŒ๋ณ„ํ•จ.
    • ์ƒˆ๋กœ์šด ๊ฐ์ฒด๊ฐ€ ์ถ”๊ฐ€๋˜๋”๋ผ๋„ ๊ธฐ์กด์— ํฐ์ƒ‰(White)์œผ๋กœ ํ‘œ์‹œ๋œ ๊ฐ์ฒด๋Š” ์œ ์ง€, ๋‚˜์ค‘์— ๋‹ค์‹œ ํƒ์ƒ‰ํ•˜์ง€ ์•Š์Œ.
    • ์žฅ์ :
      • ๋งˆํ‚น ์‹œ์ž‘ ์‹œ์ ์˜ ์ƒํƒœ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ๋™์ž‘์„ ๋ณด์žฅํ•จ.
      • ์ •ํ•ฉ์„ฑ์„ ์œ ์ง€ํ•˜๋ฉด์„œ ์ธํฌ๋ฆฌ๋ฉ˜ํ„ธ GC ์ˆ˜ํ–‰ ๊ฐ€๋Šฅ.

 

์ฆ๋ถ„ ์—…๋ฐ์ดํŠธ (Incremental Update) ์‹œ์ž‘ ๋‹จ๊ณ„ ์Šค๋ƒ…์ˆ (SATB) ๋น„๊ต

๋ฐฉ์‹ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ฐธ์กฐ ๋ณ€๊ฒฝ ๋ฐ˜์˜ ๋งˆํ‚น ์‹œ์ž‘ ์‹œ์  ๊ธฐ์ค€ ์œ ์ง€
Write Barrier ์—ญํ•  ์ƒˆ๋กœ์šด ์ฐธ์กฐ๋ฅผ ํšŒ์ƒ‰์œผ๋กœ ๋ณ€๊ฒฝ ๊ธฐ์กด ์ฐธ์กฐ๋ฅผ ์œ ์ง€
Floating Garbage ์ ๊ฒŒ ๋ฐœ์ƒ ์ƒ๋Œ€์ ์œผ๋กœ ๋งŽ์ด ๋ฐœ์ƒ
Stop-the-world ์‹œ๊ฐ„ ์งง์Œ ์ƒ๋Œ€์ ์œผ๋กœ ๊ธธ์–ด์งˆ ์ˆ˜ ์žˆ์Œ

 

 

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

 

 

 

 

 

 

 

 

 

์ฐธ๊ณ 

https://product.kyobobook.co.kr/detail/S000213057051

 

JVM ๋ฐ‘๋ฐ”๋‹ฅ๊นŒ์ง€ ํŒŒํ—ค์น˜๊ธฐ | ์ €์šฐ์ฆˆ๋ฐ - ๊ต๋ณด๋ฌธ๊ณ 

JVM ๋ฐ‘๋ฐ”๋‹ฅ๊นŒ์ง€ ํŒŒํ—ค์น˜๊ธฐ | ์ž๋ฐ” ๊ฐ€์ƒ ๋จธ์‹ ์˜ ๊นŠ์ˆ™ํ•œ ๋‚ด๋ถ€๋ฅผ ํ–ฅํ•ด ๋– ๋‚˜๋Š” ํฅ๋ฏธ์ง„์ง„ํ•œ ๋ชจํ—˜C·C++๋ฅผ ์‚ฌ์šฉํ•ด ์ฃผ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๋˜ ์‹œ์ ˆ ๊นŒ๋‹ค๋กœ์šด ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ์™€ ํ”Œ๋žซํผ ์ด์‹์„ฑ ๋ฌธ์ œ๋Š” ๊ฐœ๋ฐœ์ž๋“ค์—

product.kyobobook.co.kr

 

https://lima1016.tistory.com/125

 

[JVM ๋ฐ‘๋ฐ”๋‹ฅ] 3์žฅ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ์™€ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ์ „๋žต -1

์กฐ์•„์จ ์˜ค๋Š˜์€ 3์žฅ์— 3-1 ๋ถ€ํ„ฐ 3-3๊นŒ์ง€๋งŒ ์ •๋ฆฌํ•ด๋ณด์ž! ๋Œ€์ƒ์ด ์ฃฝ์—ˆ๋Š”๊ฐ€?์ž๋ฐ” ์„ธ๊ณ„์—์„œ๋Š” ๊ฑฐ์˜ ๋ชจ๋“  ๊ฐ์ฒด ์ธ์Šคํ„ด์Šค๊ฐ€ ํž™์— ์ €์žฅ๋œ๋‹ค. ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๊ฐ€ ํž™์„ ์ฒญ์†Œํ•˜๋ ค๋ฉด ๊ฐ€์žฅ ๋จผ์ € ์–ด๋–ค ๊ฐ์ฒด๊ฐ€ ์‚ด

lima1016.tistory.com