item 8 sungjaeyoon - JAVA-JIKIMI/EFFECTIVE-JAVA3 GitHub Wiki

finalizer์™€ cleaner ์‚ฌ์šฉ์„ ํ”ผํ•˜๋ผ

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

์‚ฌ์šฉ์„ ํ”ผํ•ด์•ผ ํ•˜๋Š” ์ด์œ 

  1. ์–ธ์ œ ์‹คํ–‰๋  ์ง€ ์•Œ ์ˆ˜ ์—†๋‹ค.
  2. ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.
  3. finalize์—์„œ ๋ฐœ์ƒํ•œ ์˜ˆ์™ธ๋Š” ๋ฌด์‹œ๋˜์–ด ์•Œ ์ˆ˜ ์—†๋‹ค.

finalizer์™€ cleaner ๋ฅผ ์“ฐ๋Š” ๊ณณ

์ž์› ๋ฐ˜๋‚ฉ์— ์“ธ close ๋ฉ”์†Œ๋“œ๋ฅผ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ˜ธ์ถœํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด ์‚ฌ์šฉํ•  ๋งŒ ํ•˜๋‹ค.
finalizer๋‚˜ Cleaner๊ฐ€ ํ˜ธ์ถœ๋ ์ง€ ์•ˆ๋ ์ง€ ์–ธ์ œ ํ˜ธ์ถœ๋ ์ง€๋„ ๋ชจ๋ฅธ์ง€๋งŒ ์•ˆํ•˜๋Š” ๊ฒƒ ๋ณด๋‹ค๋Š” ๋‚˜์œผ๋‹ˆ ์‚ฌ์šฉํ•  ๋งŒ ํ•˜๋‹ค.
์ž๋ฐ”์—์„œ ์ œ๊ณตํ•˜๋Š” FileInputStream, FileOutputStream, ThreadPoolExecutor ๊ฐ€ ๋Œ€ํ‘œ์ ์ด๋‹ค.

์ •๋ฆฌ

cleaner(์ž๋ฐ” 8 ๊นŒ์ง€๋Š” finalizer)๋Š” ์•ˆ์ „๋ง ์—ญํ• ์ด๋‚˜ ์ค‘์š”ํ•˜์ง€ ์•Š์€ ์ž์› ํšŒ์ˆ˜์šฉ์œผ๋กœ๋งŒ ์‚ฌ์šฉํ•˜์ž.
๋ฌผ๋ก  ์ด ๊ฒฝ์šฐ๋ผ๋„ ๋ถˆํ™•์‹ค์„ฑ๊ณผ ์„ฑ๋Šฅ ์ €ํ•˜์— ์กฐ์‹ฌํ•˜์—ฌ์•ผ ํ•œ๋‹ค.