Item 8. Finalizer & Cleaner

Finalizer์™€ Cleaner ์‚ฌ์šฉ์„ ํ”ผํ•˜๋ผ

Java์—๋Š” finalizer์™€ cleaner๋ผ๋Š” ๋‘ ๊ฐ€์ง€ ๊ฐ์ฒด ์†Œ๋ฉธ์ž๊ฐ€ ์กด์žฌํ•œ๋‹ค. ํ•˜์ง€๋งŒ ๋‘ ์†Œ๋ฉธ์ž ๋ชจ๋‘ ์˜ˆ์ธกํ•  ์ˆ˜ ์—†๊ณ , ์ƒํ™ฉ์— ๋”ฐ๋ผ ์œ„ํ—˜ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์„ ํ”ผํ•ด์•ผ ํ•œ๋‹ค.

  • finalizer: Java 9๋ถ€ํ„ฐ deprecated ๋จ

  • cleaner: Java 9๋ถ€ํ„ฐ finalizer๋ฅผ ๋Œ€์ฒดํ•˜๊ธฐ ์œ„ํ•ด ๋„์ž…๋˜์—ˆ์œผ๋‚˜ ์—ฌ์ „ํžˆ ์œ„ํ—˜ํ•˜๊ณ  ์˜ˆ์ธกํ•  ์ˆ˜ ์—†์Œ

์ด ๋‘ ์†Œ๋ฉธ์ž๋Š” C++์˜ destuctor์™€ ๋น„์Šทํ•ด ๋ณด์ด์ง€๋งŒ, ๋‹ค๋ฅธ ๊ฐœ๋…์ด๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฐจ์ด์ ์ด ์กด์žฌํ•œ๋‹ค.

  • C++: destructor๋Š” ๊ฐ์ฒด์˜ ์ƒ์„ฑ์„ ํ•˜๋ฉด ๊ผญ ํ•„์š”ํ•œ ๊ฒƒ์œผ๋กœ ์ž์›์„ ํšŒ์ˆ˜ํ•˜๋Š” ๋ณดํŽธ์ ์ธ ๋ฐฉ๋ฒ•

  • Java: ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๊ฐ€ ์ž์› ํšŒ์ˆ˜๋ฅผ ๋‹ด๋‹นํ•˜๋ฉฐ, finalizer์™€ cleaner๋Š” ์ฆ‰์‹œ ์ˆ˜ํ–‰๋œ๋‹ค๋Š” ๋ณด์žฅ์ด ์—†์Œ

์†Œ๋ฉธ์ž๊ฐ€ ์œ„ํ—˜ํ•œ ์ด์œ 

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

  • ์ฆ‰์‹œ ์ˆ˜ํ–‰ ๋ฏธ๋ณด์žฅ: ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง€๊ธฐ ๋•Œ๋ฌธ์— ์ฆ‰์‹œ ์ˆ˜ํ–‰๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Œ

  • ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๋ฌธ์ œ: finalizer ๋‚ด๋ถ€์—์„œ ๋ฐœ์ƒํ•œ ์˜ˆ์™ธ๋Š” ๋ฌด์‹œ๋˜๋ฉฐ, ์ฒ˜๋ฆฌํ•  ์ž‘์—…์ด ๋‚จ์•„์žˆ๋”๋ผ๋„ ์ˆ˜ํ–‰์ด ์ค‘๋‹จ๋จ(cleaner๋Š” ํ•ด๋‹น ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Œ)

  • ์„ฑ๋Šฅ ๋ฌธ์ œ: ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๊ฐ€ ์ž๋™์œผ๋กœ ์ˆ˜๊ฑฐํ•˜๋Š” ์‹œ๊ฐ„์— ๋น„ํ•ด ํ›จ์”ฌ ์˜ค๋ž˜ ๊ฑธ๋ฆผ

  • ๋ณด์•ˆ ๋ฌธ์ œ: ์ƒ์„ฑ์ด ์™„๋ฃŒ๋˜์ง€ ์•Š์€ ๊ฐ์ฒด์˜ ํ•˜์œ„ ํด๋ž˜์Šค์˜ finalizer๊ฐ€ ์ˆ˜ํ–‰๋  ์ˆ˜ ์žˆ์Œ

finalizer์™€ cleaner์˜ ์‚ฌ์šฉ

์•ˆ์ „๋ง ์—ญํ• 

๋งŒ์•ฝ ํŒŒ์ผ์ด๋‚˜ ์Šค๋ ˆ๋“œ ๋“ฑ ์ข…๋ฃŒํ•ด์•ผ ํ•  ์ž์›์„ ์†Œ๋ฉธ์‹œํ‚ค๊ธฐ ์œ„ํ•ด์„ , ์œ„์˜ ๋‘ ์†Œ๋ฉธ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค AutoCloseable ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด ๋” ์ข‹๋‹ค. ๋‘ ์†Œ๋ฉธ์ž๋Š” AutoCloseable ์ธํ„ฐํŽ˜์ด์Šค์˜ close() ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์— ๋Œ€๋น„ํ•œ ์•ˆ์ „๋ง ์—ญํ• ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋„ค์ดํ‹ฐ๋ธŒ ํ”ผ์–ด

๋„ค์ดํ‹ฐ๋ธŒ ํ”ผ์–ด๋ž€ ์ผ๋ฐ˜ ์ž๋ฐ” ๊ฐ์ฒด๊ฐ€ ๋„ค์ดํ‹ฐ๋ธŒ ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ์ ‘๊ทผํ•˜๋Š” ๋„ค์ดํ‹ฐ๋ธŒ ๊ฐ์ฒด๋ฅผ ๋งํ•œ๋‹ค. ๋„ค์ดํ‹ฐ๋ธŒ ๊ฐ์ฒด๋Š” ์ž๋ฐ” ๊ฐ์ฒด๊ฐ€ ์•„๋‹ˆ์—ฌ์„œ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๊ฐ€ ํšŒ์ˆ˜ํ•˜์ง€ ๋ชปํ•˜๊ธฐ ๋•Œ๋ฌธ์— finalizer์™€ cleaner๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•˜์—ฌ ํšŒ์ˆ˜ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

Last updated

Was this helpful?