"์๋ ํ์ธ์!"
"์ด์ ํ ๊ฐ์ง ๋ ๋๋ผ์ด ์ฌ์ค์ ๋ํด ๋ง์๋๋ฆฌ๊ฒ ์ต๋๋ค. WeakReference ์ ๋๋ค ."
"SoftReference์ ๊ฑฐ์ ๋์ผํ๊ฒ ๋ณด์ ๋๋ค."
// Create a Cat object
Cat cat = new Cat();
// Create a weak reference to a Cat object
WeakReference<Cat> catRef = new WeakReference<Cat>(cat);
// Now only the catRef weak reference points at the object
cat = null;
// Now the ordinary cat variable also references the object
cat = catRef.get();
// Clear the weak reference
catRef.clear();
"์ฝํ ์ฐธ์กฐ์๋ ๋ ๋ค๋ฅธ ํน๋ณํ ๊ธฐ๋ฅ์ด ์์ต๋๋ค."
"๊ฐ์ฒด์ ์ผ๋ฐ ์ฐธ์กฐ๋ ์ํํธ ์ฐธ์กฐ๊ฐ ์๊ณ ์ฝํ ์ฐธ์กฐ๋ง ์๋ ๊ฒฝ์ฐ ๊ฐ์ฒด๋ ํ์ฑ ์ํ์ด์ง๋ง ๋ค์ ๊ฐ๋น์ง ์์ง ์ ์๋ฉธ๋ฉ๋๋ค."
"๋ค์ ๋ง์ํด ์ฃผ์๊ฒ ์ต๋๊น? ์ด ์ฐธ์กฐ์ ์ฐจ์ด์ ์ ๋ฌด์์ ๋๊น?"
" SoftReference ์ ์ํด์๋ง ์ฃฝ์์ผ๋ก๋ถํฐ ์ ์ง๋๋ ๊ฐ์ฒด๋ ์ํ๋ ๋งํผ ๋ง์ ๊ฐ๋น์ง ์ปฌ๋ ์ ์์ ์ด์๋จ์ ์ ์์ผ๋ฉฐ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ถฉ๋ถํ์ง ์์ผ๋ฉด ์๋ง๋ ํ๊ดด๋ ๊ฒ์ ๋๋ค."
" WeakReference ์ ์ํด์๋ง ์ฃฝ์์์ ์ ์ง๋๋ ๊ฐ์ฒด๋ ๋ค์ ๊ฐ๋น์ง ์์ง์์ ์ด์๋จ์ง ๋ชปํฉ๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๋ ๊ฒ ๋ ๋๊น์ง WeakReference์์ get() ๋ฉ์๋๋ฅผ ํธ์ถํ ๋ค์ ํด๋น ๋ฉ์๋๋ฅผ ํธ์ถํ๊ฑฐ๋ ๋ค๋ฅธ ์์ ์ ์ํํ์ฌ ๊ฐ์ฒด๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค. ."
"๊ฐ์ฒด๊ฐ SoftReference์ WeakReference ๋ชจ๋์์ ์ฐธ์กฐ๋๋ ๊ฒฝ์ฐ ์ด๋ป๊ฒ ๋ฉ๋๊น?"
"๊ฐ๋จํฉ๋๋ค. ํ๋ ์ด์์ ์ผ๋ฐ ์ฐธ์กฐ๊ฐ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํค๋ฉด ํ์ฑ ์ํ๋ก ๊ฐ์ฃผ๋ฉ๋๋ค. ๊ทธ๋ฐ๋ฐ ์ด๋ฌํ ์ฐธ์กฐ๋ฅผ StrongReference๋ผ๊ณ ํฉ๋๋ค."
"์ผ๋ฐ์ ์ธ ์ฐธ์กฐ๊ฐ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํค์ง ์์ง๋ง SoftReference๋ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํค๋ ๊ฒฝ์ฐ ๋ถ๋๋ฝ๊ฒ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค."
"์ผ๋ฐ ์ฐธ์กฐ๋ SoftReference๊ฐ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํค์ง ์์ง๋ง WeakReference๋ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํค๋ ๊ฒฝ์ฐ ์ฝํ๊ฒ ๋๋ฌํ ์ ์์ต๋๋ค."
"์๊ฐํด ๋ณด์ธ์. SoftReference๋ ๊ฐ์ฒด๊ฐ ์ญ์ ๋์ง ์๋๋ก ๋ณดํธํ๊ณ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํ ๊ฒฝ์ฐ์๋ง ๊ฐ์ฒด๊ฐ ์ญ์ ๋๋๋ก ํฉ๋๋ค. WeakReference๋ ๋ค์ ๊ฐ๋น์ง ์์ง๊น์ง ๊ฐ์ฒด๋ฅผ ๋ณด์ ํฉ๋๋ค. SoftReference๋ ์ญ์ ์ ๋ํ ๋ ํฐ ์ ํญ์ ์ ๊ณตํฉ๋๋ค."
"์. ์ ๊ฒ ๊ฐ์."
"์ข์ต๋๋ค. ๊ทธ๋ผ WeakReferences์ ๊ด๋ จ๋ ๋ ๋ค๋ฅธ ํฅ๋ฏธ๋ก์ด ์ฌํญ์ธ WeakHashMap์ ๋ํด ๋ง์๋๋ฆฌ๊ฒ ์ต๋๋ค."
"์ฌ๊ฐํ๊ฒ ๋ค๋ฆฌ๋ค์!"
"๊ทธ๋ฆฌ๊ณ ๋ช ๊ฐ์ง! WeakHashMap์ ํค๊ฐ ์ฝํ ์ฐธ์กฐ(WeakReferences)์ธ HashMap์ ๋๋ค."
"์ฆ, ๊ทธ๋ฌํ HashMap์ ๊ฐ์ฒด๋ฅผ ์ถ๊ฐํ๊ณ ์์ ํฉ๋๋ค. ํ์์ ๊ฐ์ด ๋น์ฆ๋์ค๋ฅผ ์ํํฉ๋๋ค."
"WeakHashMap์ ์ ์ฅํ๋ ๊ฐ์ฒด๊ฐ ์ผ๋ฐ(๊ฐ๋ ฅํ๊ฑฐ๋ ๋ถ๋๋ฌ์ด) ์ฐธ์กฐ๋ฅผ ํค๋ก ๊ฐ์ง๊ณ ์๋ ํ ์ด๋ฌํ ๊ฐ์ฒด๋ ์ด์ ์์ ๊ฒ์ ๋๋ค."
"ํ์ง๋ง ์ ์ฒด ์์ฉ ํ๋ก๊ทธ๋จ์์ ์ด๋ฌํ ๊ฐ์ฒด์ ๋ํ ์ฐธ์กฐ๊ฐ ๋ ์ด์ ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. ์ด๋ฌํ ๊ฐ์ฒด๊ฐ ์ฃฝ์ง ์๋๋ก ์ ์งํ๋ ๊ฒ์ WeakHashMap ๋ด๋ถ์ ๋ช ๊ฐ์ง WeakReferences๋ฟ์ ๋๋ค. ๋ค์ ๊ฐ๋น์ง ์์ง ํ ์ด๋ฌํ ๊ฐ์ฒด๋ WeakHashMap์์ ์ฌ๋ผ์ง๋๋ค. ์์ฒด์ ์ผ๋ก. ๋ง์น ๊ทธ๋ค์ด ๊ฑฐ๊ธฐ์ ์์์ด."
"์ ๊ฐ ์ดํดํ๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค."
"WeakHashMap์ ๊ฐ์ฒด ์(ํค์ ๊ฐ)์ ์ ์ฅํฉ๋๋ค. ๊ทธ๋ฌ๋ WeakHashMap์ ํค๋ฅผ ์ง์ ์ฐธ์กฐํ์ง ์๊ณ WeakReferences๋ฅผ ํตํด ์ฐธ์กฐํฉ๋๋ค. ๋ฐ๋ผ์ ํค๋ก ์ฌ์ฉ๋๋ ๊ฐ์ฒด์ ์ฝํ๊ฒ ๋๋ฌํ ์ ์๊ฒ ๋๋ฉด ๋ค์์ ์๋ฉธ๋ฉ๋๋ค. ๊ฐ๋น์ง ์์ง. ๊ฒฐ๊ณผ์ ์ผ๋ก ํด๋น ๊ฐ๋ WeakHashMap์์ ์๋์ผ๋ก ์ ๊ฑฐ๋ฉ๋๋ค."
"WeakHashMap์ ์ฌ์ฉํ์ฌ ํน์ ๊ฐ์ฒด์ ๋ํ ์ถ๊ฐ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ ๊ฒ์ ๋งค์ฐ ํธ๋ฆฌํฉ๋๋ค."
"์ฐ์ ๊ฐ์ฒด ์์ฒด๋ฅผ ํค๋ก ์ฌ์ฉํ๋ฉด ์ ๋ณด์ ์ ๊ทผํ๊ธฐ๊ฐ ๋งค์ฐ ์ฝ์ต๋๋ค."
"๋์งธ, ๊ฐ์ฒด๊ฐ ํ๊ดด๋๋ฉด ๊ด๋ จ๋ ๋ชจ๋ ๋ฐ์ดํฐ์ ํจ๊ป HashMap์์ ์ฌ๋ผ์ง๋๋ค."
"์๋ฅผ ๋ค์ด:
// Create an object to store additional information about the user
WeakHashMap<User, StatisticInfo> userStatistics = new WeakHashMap<User, StatisticInfo>();
// Put information about the user into userStatistics
User user = session.getUser();
userStatistics.put(user, new StatisticInfo (โฆ));
// Get information about the user from userStatistics
User user = session.getUser();
StatisticInfo statistics = userStatistics.get(user);
// Remove any information about the user from userStatistics
User user = session.getUser();
userStatistics.remove(user);
- "WeakHashMap ๋ด๋ถ์์ ํค๋ WeakReferences๋ก ์ ์ฅ๋ฉ๋๋ค."
- "์ฌ์ฉ์ ๊ฐ์ฒด๊ฐ ๊ฐ๋น์ง ์์ง๊ธฐ์ ์ํด ํ๊ดด๋๋ ์ฆ์ remove(user) ๋ฉ์๋๊ฐ WeakHashMap ๋ด๋ถ์์ ์์์ ์ผ๋ก ํธ์ถ๋๊ณ ์ฌ์ฉ์ ๊ฐ์ฒด์ ๊ด๋ จ๋ ๋ชจ๋ ์ ๋ณด๊ฐ WeakHashMap์์ ์๋์ผ๋ก ์ ๊ฑฐ๋ฉ๋๋ค."
"๊ฐ๋ ฅํ ๋๊ตฌ ๊ฐ๊ตฐ์. ์ด๋์์ ์ฌ์ฉํ ์ ์๋์?"
"์ํฉ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค. ๊ฐ์ฒด๋ก ํ์๋๋ ์ผ๋ถ ์์ ์ ์์ ์ ์ถ์ ํ๊ณ ์ด์ ๋ํ ์ ๋ณด๋ฅผ ๋ก๊ทธ์ ๊ธฐ๋กํ๋ ์ค๋ ๋๊ฐ ํ๋ก๊ทธ๋จ์ ์๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. ์ด ์ค๋ ๋๋ ๋ชจ๋ํฐ๋ง๋ ๊ฐ์ฒด๋ฅผ WeakHashMap์ ์ ์ฅํ ์ ์์ต๋๋ค. ๊ฐ์ฒด๊ฐ ํ์ํ์ง ์์ผ๋ฏ๋ก ๊ฐ๋น์ง ์์ง๊ธฐ๊ฐ ๊ฐ์ฒด๋ฅผ ์ญ์ ํ๊ณ ํด๋น ๊ฐ์ฒด์ ๋ํ ์ฐธ์กฐ๋ WeakHashMap์์ ์๋์ผ๋ก ์ ๊ฑฐ๋ฉ๋๋ค."
"ํฅ๋ฏธ๋กญ๊ฒ ๋ค๋ฆฌ๋ค์. ์ด๋ ๊ฒ ๊ฐ๋ ฅํ ๋ฉ์ปค๋์ฆ์ ํ์ฉํ๋ ์ง์งํ Java ํ๋ก๊ทธ๋จ์ ์์ง ์์ฑํ์ง ์์ ๊ฒ ๊ฐ์ ๋๋์ด ๋ญ๋๋ค. ํ์ง๋ง ์์ผ๋ก ๋ ธ๋ ฅํ๊ฒ ์ต๋๋ค. Ellie, ์ด๋ ๊ฒ ํฅ๋ฏธ๋ก์ด ๊ฐ์์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค."