์๋ฐ๋ finalizer์ cleaner๋ผ๋ ๋ ๊ฐ์ง ๊ฐ์ฒด ์๋ฉธ์๋ฅผ ์ ๊ณตํ๋ค. ํ์ง๋ง ์ฌ๋ฌ ๊ฐ์ง ๋ฌธ์ ์ ์ผ๋ก ์ธํด ์ฌ์ฉ์ด ์์ ๋๋ค.
ํด๋น ๊ธ์์ ๋ฌธ์ ์ ๋ค๊ณผ ์ ์ ํ ์ฐ์์์ ๋ํด์ ์์๋ณด์.
๐ข๋ฌธ์ ์ 1. finalizer์ cleaner๋ ์ฆ์ ์ํ๋๋ค๋ ๋ณด์ฅ์ด ์๋ค.
finalizer๋ cleaner๋ฅผ ์ผ๋ง๋ ์ ์ํ ์ํํ ์ง๋ ์ ์ ์ผ๋ก ๊ฐ๋น์ง ์ปฌ๋ ํฐ ์๊ณ ๋ฆฌ์ฆ์ ๋ฌ๋ ธ์ผ๋ฉฐ, ์ด๋ ๊ฐ๋น์ง ์ปฌ๋ ํฐ ๊ตฌํ๋ง๋ค ์ฒ์ฐจ๋ง๋ณ์ด๋ค. finalizer๋ cleaner ์ํ ์์ ์ ์์กดํ๋ ํ๋ก๊ทธ๋จ์ ๋์ ๋ํ ๋ง์ฐฌ๊ฐ์ง๋ค.
๐ข๋ฌธ์ ์ 2. finalizer์ cleaner๋ ์คํ๋์ง ์์ ์๋ ์๋ค.
์ด๋ ์ ๊ทผํ ์ ์๋ ์ผ๋ถ ๊ฐ์ฒด์ ๋ธ๋ฆฐ ์ข
๋ฃ ์์
์ ์ ํ ์ํํ์ง ๋ชปํ ์ฑ ํ๋ก๊ทธ๋จ์ด ์ค๋จ๋ ์๋ ์๋ค๋ ์๊ธฐ๋ค. ๋ฐ๋ผ์ ํ๋ก๊ทธ๋จ ์์ ์ฃผ๊ธฐ์ ์๊ด์๋, ์ํ๋ฅผ ์๊ตฌ์ ์ผ๋ก ์์ ํ๋ ์์
์์๋ ์ ๋ finalizer๋ cleaner์ ์์กดํด์๋ ์ ๋๋ค.
์๋ฅผ ๋ค์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ ๊ณต์ ์์์ ์๊ตฌ ๋ฝ(lock) ํด์ ๋ฅผ finalizer๋ cleaner์ ๋งก๊ฒจ ๋์ผ๋ฉด ๋ถ์ฐ ์์คํ
์ ์ฒด๊ฐ ์์ํ ๋ฉ์ถ ๊ฒ์ด๋ค.
๐ข๋ฌธ์ ์ 3. finalizer ๋์ ์ค์ ์์ธ๊ฐ ๋ฐ์ํ๋ฉด ์ ๋ฆฌ ์์ ์ด ์ฒ๋ฆฌ๋์ง ์์ ์๋ ์๋ค.
์ก์ง ๋ชปํ ์์ธ ๋๋ฌธ์ ํด๋น ๊ฐ์ฒด๋ ์์นซ ๋ง๋ฌด๋ฆฌ๊ฐ ๋ ๋ ์ํ๋ก ๋จ์ ์ ์๋ค. ๊ทธ๋ฆฌ๊ณ ๋ค๋ฅธ ์ค๋ ๋๊ฐ ์ด์ฒ๋ผ ํผ์๋ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ ค ํ๋ค๋ฉด ์ด๋ป๊ฒ ๋์ํ ์ง ์์ธกํ ์ ์๋ค. ๋ณดํต์ ๊ฒฝ์ฐ์ ์ก์ง ๋ชปํ ์์ธ๊ฐ ์ค๋ ๋๋ฅผ ์ค๋จ์ํค๊ณ ์คํ ์ถ์ ๋ด์ญ์ ์ถ๋ ฅํ๊ฒ ์ง๋ง, ๊ฐ์ ์ผ์ด finalizer์์ ์ผ์ด๋๋ค๋ฉด ๊ฒฝ๊ณ ์กฐ์ฐจ ์ถ๋ ฅํ์ง ์๋๋ค.
๐ข๋ฌธ์ ์ 4. finalizer์ cleaner๋ ์ฌ๊ฐํ ์ฑ๋ฅ ๋ฌธ์ ๊ฐ ์๋ค.
finalizer๊ฐ ๊ฐ๋น์ง ์ปฌ๋ ํฐ์ ํจ์จ์ ๋จ์ด๋จ๋ฆฌ๊ธฐ ๋๋ฌธ์ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ๋๋ฐํ๋ค.
๐ข๋ฌธ์ ์ 5. finalizer๋ ๋ณด์ ๋ฌธ์ ๊ฐ ์๋ค.
์์ฑ์๋ ์ง๋ ฌํ ๊ณผ์ ์์ ์์ธ๊ฐ ๋ฐ์ํ๋ฉด, ์ด ์์ฑ๋๋ค ๋ง ๊ฐ์ฒด์์ ์
์์ ์ธ ํ์ ํด๋์ค์ finalizer๊ฐ ์ํ๋ ์ ์๊ฒ ๋๋ค. ์ด finalizer๋ ์ ์ ํ๋์ ์์ ์ ์ฐธ์กฐ๋ฅผ ํ ๋นํ์ฌ ๊ฐ๋น์ง ์ปฌ๋ ํฐ๊ฐ ์์งํ์ง ๋ชปํ๊ฒ ๋ง์ ์ ์๋ค. ์ด๋ ๊ฒ ์ผ๊ทธ๋ฌ์ง ๊ฐ์ฒด๊ฐ ๋ง๋ค์ด์ง๊ณ ๋๋ฉด, ์ด ๊ฐ์ฒด์ ๋ฉ์๋๋ฅผ ํธ์ถํด ์ ์ด์๋ ํ์ฉ๋์ง ์์์ ์์
์ ์ํํ๋ ๊ฑด ์ผ๋ ์๋๋ค.
final์ด ์๋ ํด๋์ค๋ฅผ finalizer ๊ณต๊ฒฉ์ผ๋ก๋ถํฐ ๋ฐฉ์ดํ๋ ค๋ฉด ์๋ฌด ์ผ๋ ํ์ง ์๋ finalize ๋ฉ์๋๋ฅผ ๋ง๋ค๊ณ final๋ก ์ ์ธํ์.
๐์ ์ ํ ์ฌ์ฉ 1. ์์ ๋ฐ๋ฉ์ฉ ์์ ๋ง์ผ๋ก ์ฌ์ฉํ ์ ์๋ค.
cleaner๋ finalizer๊ฐ ์ฆ์ (ํน์ ๋๊น์ง) ํธ์ถ๋๋ฆฌ๋ผ๋ ๋ณด์ฅ์ ์์ง๋ง, ํด๋ผ์ด์ธํธ๊ฐ ํ์ง ์์ ์์ ํ์๋ฅผ ๋ฆ๊ฒ๋ผ๋ ํด์ฃผ๋ ๊ฒ์ด ์์ ์ ํ๋ ๊ฒ๋ณด๋ค๋ ๋ซ๋ค.
๐์ ์ ํ ์ฌ์ฉ 2. ๋ค์ดํฐ๋ธ ํผ์ด ์์ ํ์
๋ค์ดํฐ๋ธ ํผ์ด๋ ์ผ๋ฐ ์๋ฐ ๊ฐ์ฒด๊ฐ ๋ค์ดํฐ๋ธ ๋ฉ์๋๋ฅผ ํตํด ๊ธฐ๋ฅ์ ์์ํ ๋ค์ดํฐ๋ธ ๊ฐ์ฒด๋ฅผ ๋งํ๋ค. ์ด๋ ์๋ฐ ๊ฐ์ฒด๊ฐ ์๋๋ ๊ฐ๋น์ง ์ปฌ๋ ํฐ๋ ๊ทธ ์กด์ฌ๋ฅผ ์์ง ๋ชปํ๋ค. ๊ทธ ๊ฒฐ๊ณผ ์๋ฐ ํผ์ด๋ฅผ ํ์ํ ๋ ๋ค์ดํฐ๋ธ ๊ฐ์ฒด๊น์ง ํ์ํ์ง ๋ชปํ๋ค. ๊ทธ๋ฌ๋ฏ๋ก cleaner๋ finalizer๊ฐ ๋์์ ์ฒ๋ฆฌํ๊ธฐ์ ์ ๋นํ ์์
์ด๋ค.
๋จ, ์ฑ๋ฅ ์ ํ๋ฅผ ๊ฐ๋นํ ์ ์๊ณ ๋ค์ดํฐ๋ธ ํผ์ด๊ฐ ์ฌ๊ฐํ ์์์ ๊ฐ์ง๊ณ ์์ง ์์ ๋์๋ง ํด๋น๋๋ค. ์ฑ๋ฅ ์ ํ๋ฅผ ๊ฐ๋นํ ์ ์๊ฑฐ๋ ๋ค์ดํฐ๋ธ ํผ์ด๊ฐ ์ฌ์ฉํ๋ ์์์ ์ฆ์ ํ์ํด์ผ ํ๋ค๋ฉด close ๋ฉ์๋๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
ํด๋น ๊ธ์ ๋ฐฑ๊ธฐ์ ๋์ '์ดํํฐ๋ธ ์๋ฐ ์๋ฒฝ ๊ณต๋ต'์ ์๊ฐํ๊ณ ์์ฑํ ๊ฒ์ ๋๋ค.