SharedPreferences๋ฅผ ํธํ๊ฒ ์จ๋ณด๊ฒ ๋ค๊ณ Object๋ก ๋ฉํํ์๋ค.
Application ํด๋์ค์ onCreate()์์ ์ด๊ธฐํ ์ application context๋ฅผ ๋ฐ์ SharedPreferences ๊ธฐ๋ฅ์ ์ฌ์ฉํ ๋๋ง๋ค context๋ฅผ ํ๋ผ๋ฏธํฐ๋ก ๋ฐ์์ค์ง ์๋๋ก ํด์ ์ ๋ง ํธํ๊ฒ ์ฐ๊ณ ์์๋๋ฐ, ์๋๋ก์ด๋ ์คํ๋์ค์์ memory leak ๊ฒฝ๊ณ ๋ฅผ ๋์์คฌ๋ค.
Do not place Android context classes in static fields (static reference to 'Pref' which has field 'context' pointing to 'Context'); this is a memory leak
์ด๊ธฐํ ์์ ๋ฐ์์ค๋ context๋ฅผ WeakReference๋ก ๋ํํ ์ง, SoftReference๋ก ๋ํํ ์ง ๊ณ ๋ฏผํ๋ค. ์ฑ์ ์ฌ์ฉํ ๋ ์ด๋ ๋๋ ํธํ๊ฒ ์ฌ์ฉํ๊ธฐ ์ํด์ ๋ง๋ SharedPreferences object์ด๊ธฐ ๋๋ฌธ์, ์ ๋งํ๋ฉด ์ค๋์ค๋ GC์๊ฒ์ ๋ฉ์ด์ง๋ ๊ฒ์ด ์ข์ง ์๋ ์ถ์ด์ SoftReference ๊ฐ WeakReference๋ณด๋ค ๋์๊น ๊ณ ๋ฏผํ๋ค.
https://aroundck.tistory.com/477
https://itmining.tistory.com/10
WeakReference๋ strong reference๊ฐ ๋ชจ๋ ๋๊ธฐ๊ณ ๋์ GC ํ์ด๋ฐ์ด ๋์ด์ผ์ง GC routine์ ํ๋ค๋ ๊ฒ์ ๋ณด๊ณ , WeakReference๋ฅผ ์ฌ์ฉํด๋ ๋๊ฒ ๋ค๋ ๊ฒฐ์ ์ ๋ด๋ ธ๋ค. ์ด SharedPreferences ๋ํ object์์ ์ฐธ์กฐํ๋ context๋ ์ฑ์ application context์ด๋ค. ์ด ์น๊ตฌ๋ Strong ์์ฑ์ ๊ฐ์ง ๊ฒ์ด๊ธฐ์ ์ ๋งํ๋ฉด GC์๊ฒ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ์๋์ง ์์ ๊ฒ์์ ์ถ์ธกํ ์ ์์๋ค.
'๋น ๊ตฌ๋ฉ ์ฑ์ฐ๊ธฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Android][Retrofit] HTML Response (0) | 2022.07.21 |
---|---|
[Android]์ด๋ฉ์ผ validation (0) | 2022.07.14 |
[Android][ADB] ๋นํ๊ธฐ ๋ชจ๋ on/off, ๋นํ๊ธฐ ๋ชจ๋ ํ์ธ (0) | 2022.04.25 |
[Google Play Console] ์ด์์ ๊ธฐ ํ๊ธฐ (0) | 2022.04.21 |
[Android][Coroutine][SharedPreferences] ํ์ด๋จธ ๊ตฌํ (0) | 2022.04.21 |