๐ฃ๏ธ ๋ฉด์ /๋ฉด์ ์ง๋ฌธ์ ๋ฆฌ
ARC, MRC
JerryiOS
2023. 5. 18. 21:34
Q. ARC, MRC๋ ๋ฌด์์ธ์ง ์ค๋ช ํด์ฃผ์ธ์
A.
1.
ARC๋ ์๋์ผ๋ก HeapObject์์ ๋ค์ด์๋ Reference Count๋ฅผ ๊ณ์ฐํด์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ด๋ฆฌํด์ฃผ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
-> Java์ Garbage Collector์๋ ๋ค๋ฅด๊ฒ ์ปดํ์ผ ์์ ์ ์คํ๋ฉ๋๋ค.
2.
MRC๋ ์๋์ผ๋ก Reference Count๋ฅผ ๊ณ์ฐํฉ๋๋ค.
Retain, release ๋ฉ์๋๋ฅผ ์ง์ ์์ฑํด์ค์ผ ํฉ๋๋ค. Objective-C ์์ ์ฌ์ฉํฉ๋๋ค.
cf)
- ๋์ ํ ๋น์ผ๋ก ์ธ์คํด์ค๊ฐ ์์ฑ๋๋ฉด ํด๋น ์ ๋ณด๋ HeapObject๋ผ๋ struct๋ก ๊ด๋ฆฌ๋๋ค.
- HeapObject์๋ ๋์ ํ ๋น๋๋ ๊ฐ์ฒด๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐ์ดํฐ. ์ฆ, reference count์ type meta data๋ฅผ ๊ฐ์ต๋๋ค.
Q. ARC๋ compile time์ ์คํ๋๋๋ฐ ์ด๋ป๊ฒ ๋์ ์ผ๋ก ์คํ๋๋ ๊ฒ๋ค์ reference count๋ฅผ ์ธ๊ณ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ํ ์ ์๋์?
A.
1.
ARC๋ compile time์ ์๋์ผ๋ก retain๊ณผ release ์ฝ๋๋ฅผ ์ ์ ํ ์์น์ ์ฝ์ ํด์ค๋๋ค.
MRC์์ ์๋์ผ๋ก ์์ฑํ๋ ๋ฉ์๋๋ฅผ ์๋์ผ๋ก ์์ฑํด์ค๋๋ค.
2.
Run time์ ์ฝ๋๊ฐ ์คํ๋๋ค๊ฐ retain/release์ ์ํด count๊ฐ 0๋๋ฉด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํด์ ํฉ๋๋ค.
Q. ARC์ GC๋ ์ด๋ค ์ฐจ์ด์ ์ด ์๋์?
A.
1.
ARC๋ ์ปดํ์ผ ํ์์ ์คํ๋๊ณ , GC๋ ๋ฐํ์์ ์คํ๋ฉ๋๋ค.
2.
์ด์ ๋ฐ๋ผ ARC๋ ๋ฐํ์ ์ฑ๋ฅ์ด ์ข์์ง๋ค๋ ์ฅ์ ์ ๊ฐ์ง๋ง, ์ฑ ์คํ ์ค ์ํ์ฐธ์กฐ ๋ฐ์ ์ ๋งค์ฐ ์น๋ช ์ ์ด๋ผ๋ ๋จ์ ์ ๊ฐ์ต๋๋ค.
3.
GC๋ ๋ฐํ์์ ์ฐธ์กฐ๋ฅผ ๊ณ์ ์ถ์ ํ๋ ๋ฆฌ์์ค๊ฐ ํ์ํ๋ค๋ ๋จ์ ์ ๊ฐ์ง๋ง,
ARC์ ๋นํด ์น๋ช ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๋์๋ฅผ ๋ง์ ํ๋ฅ ์ด ๋๋ค๋ ์ฅ์ ์ ๊ฐ์ต๋๋ค.
Q. ARC๊ฐ ๋ฉ๋ชจ๋ฆฌ ํด์ ๋ฅผ ํ ์ ์๋ ์ํฉ์ ๋ํด ์ค๋ช ํด๋ณด์ธ์.
A.
1.
ARC์ ๊ฒฝ์ฐ ๋จ์ํ ์ปดํ์ผ ํ์์ reference counting์ ํตํด ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ํ๊ธฐ ๋๋ฌธ์ ์ํ ์ฐธ์กฐ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ ๋ฉ๋ชจ๋ฆฌ ํด์ ๊ฐ ์ด๋ ต์ต๋๋ค.
2.
GC๋ ๋ฐํ์์ Mark-and-Sweep ๋ฐฉ์์ผ๋ก ๋ชจ๋ ์ธ์คํด์ค๋ฅผ ์ฒดํฌํฉ๋๋ค.
๋ฐ๋ผ์ ์ํ์ฐธ์กฐ๊ฐ ๋ฐ์ํ๋๋ผ๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํด์ ํ ์ ์์ต๋๋ค.
- Mark: ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ํ์ํ๋ฉฐ ์ฌ์ฉ์ค์ธ ๊ฐ์ฒด ํ์
- Seep: ํ์๋์ง ์์ ๊ฐ์ฒด๋ฅผ ๋ฉ๋ชจ๋ฆฌ์์ ์ ๊ฑฐ
Ref
https://velog.io/@heyksw/iOS-%EB%A9%B4%EC%A0%91-%EC%A4%80%EB%B9%84-ksl8uxwf#7-arc--mrc--gc
๋ฐ์ํ