2022.02.14 (๊ฐ๋ ์ ๋ฆฌ)
โถ ๊ฐ์ธ ๊ณต๋ถ ๊ด๋ จ
7. Garbage Collection(๊ฐ๋น์ง ์ปฌ๋ ์ )์ ๋์ ๋ฐฉ์
- Young ์์ญ๊ณผ Old ์์ญ์ ์๋ก ๋ค๋ฅธ ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ๋ก ๋์ด ์๊ธฐ ๋๋ฌธ์, ์ธ๋ถ์ ์ธ ๋์ ๋ฐฉ์์ ๋ค๋ฅด๋ค. ํ์ง๋ง ๊ธฐ๋ณธ์ ์ผ๋ก ๊ฐ๋น์ง ์ปฌ๋ ์ ์ด ์คํ๋๋ค๊ณ ํ๋ฉด ๋ค์์ 2๊ฐ์ง ๊ณตํต์ ์ธ ๋จ๊ณ๋ฅผ ๋ฐ๋ฅด๊ฒ ๋๋ค.
- Stop The World : JVM์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํ์ ๋ฉ์ถ๋ ์์ ์ด๋ค. GC๊ฐ ์คํ๋ ๋๋ GC๋ฅผ ์คํํ๋ ์ฐ๋ ๋๋ฅผ ์ ์ธํ ๋ชจ๋ ์ฐ๋ ๋๋ค์ ์์ ์ด ์ค๋จ๋๋ค. ๋น์ฐํ ๋ชจ๋ ์ฐ๋ ๋๋ค์ ์์ ์ด ์ค๋จ๋๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ฉ์ถ๊ธฐ ๋๋ฌธ์, GC์ ์ฑ๋ฅ ๊ฐ์ ์ ์ํด ํ๋์ ํ๋ค๊ณ ํ๋ฉด ๋ณดํต stop-the-world์ ์๊ฐ์ ์ค์ด๋ ์์ ์ ํ๋ ๊ฒ์ด๋ค.
- Mark and Sweep :
- Mark: ์ฌ์ฉ๋๋ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ์ฉ๋์ง ์๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๋ณํ๋ ์์
- Sweep: Mark ๋จ๊ณ์์ ์ฌ์ฉ๋์ง ์์์ผ๋ก ์๋ณ๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํด์ ํ๋ ์์
- Stop The World๋ฅผ ํตํด ๋ชจ๋ ์์ ์ ์ค๋จ์ํค๋ฉด, GC๋ ์คํ์ ๋ชจ๋ ๋ณ์ ๋๋ Reachable ๊ฐ์ฒด๋ฅผ ์ค์บํ๋ฉด์ ๊ฐ๊ฐ์ด ์ด๋ค ๊ฐ์ฒด๋ฅผ ์ฐธ๊ณ ํ๊ณ ์๋์ง๋ฅผ ํ์ํ๊ฒ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฌ์ฉ๋๊ณ ์๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๋ณํ๋๋ฐ, ์ด๋ฌํ ๊ณผ์ ์ Mark๋ผ๊ณ ํ๋ค. ์ดํ์ Mark๊ฐ ๋์ง ์์ ๊ฐ์ฒด๋ค์ ๋ฉ๋ชจ๋ฆฌ์์ ์ ๊ฑฐํ๋๋ฐ, ์ด๋ฌํ ๊ณผ์ ์ Sweep๋ผ๊ณ ํ๋ค.
- [ Minor GC์ ๋์ ๋ฐฉ์ ]
- Minor GC๋ฅผ ์ ํํ ์ดํดํ๊ธฐ ์ํด์๋ Young ์์ญ์ ๊ตฌ์กฐ์ ๋ํด ์ดํด๋ฅผ ํด์ผ ํ๋ค. Young ์์ญ์ 1๊ฐ์ Eden ์์ญ๊ณผ 2๊ฐ์ Survivor ์์ญ, ์ด 3๊ฐ์ง๋ก ๋๋์ด์ง๋ค.
- Eden ์์ญ: ์๋ก ์์ฑ๋ ๊ฐ์ฒด๊ฐ ํ ๋น(Allocation)๋๋ ์์ญ
- Survivor ์์ญ: ์ต์ 1๋ฒ์ GC ์ด์ ์ด์๋จ์ ๊ฐ์ฒด๊ฐ ์กด์ฌํ๋ ์์ญ
- ๊ฐ์ฒด๊ฐ ์๋กญ๊ฒ ์์ฑ๋๋ฉด Young ์์ญ ์ค์์๋ Eden ์์ญ์ ํ ๋น(Allocation)์ด ๋๋ค. ๊ทธ๋ฆฌ๊ณ Eden ์์ญ์ด ๊ฝ ์ฐจ๋ฉด Minor GC๊ฐ ๋ฐ์ํ๊ฒ ๋๋๋ฐ, ์ฌ์ฉ๋์ง ์๋ ๋ฉ๋ชจ๋ฆฌ๋ ํด์ ๋๊ณ Eden ์์ญ์ ์กด์ฌํ๋ ๊ฐ์ฒด๋ (์ฌ์ฉ์ค์ธ) Survivor ์์ญ์ผ๋ก ์ฎ๊ฒจ์ง๊ฒ ๋๋ค. Survivor ์์ญ์ ์ด 2๊ฐ์ด์ง๋ง ๋ฐ๋์ 1๊ฐ์ ์์ญ์๋ง ๋ฐ์ดํฐ๊ฐ ์กด์ฌํด์ผ ํ๋ค.
- ๋์ ์์
- ์๋ก ์์ฑ๋ ๊ฐ์ฒด๊ฐ Eden ์์ญ์ ํ ๋น๋๋ค.
- ๊ฐ์ฒด๊ฐ ๊ณ์ ์์ฑ๋์ด Eden ์์ญ์ด ๊ฝ์ฐจ๊ฒ ๋๊ณ Minor GC๊ฐ ์คํ๋๋ค.
- Eden ์์ญ์์ ์ฌ์ฉ๋์ง ์๋ ๊ฐ์ฒด์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํด์ ๋๋ค.
- Eden ์์ญ์์ ์ด์๋จ์ ๊ฐ์ฒด๋ 1๊ฐ์ Survivor ์์ญ์ผ๋ก ์ด๋๋๋ค.
- 1~2๋ฒ์ ๊ณผ์ ์ด ๋ฐ๋ณต๋๋ค๊ฐ Survivor ์์ญ์ด ๊ฐ๋ ์ฐจ๊ฒ ๋๋ฉด Survivor ์์ญ์ ์ด์๋จ์ ๊ฐ์ฒด๋ฅผ ๋ค๋ฅธ Survivor ์์ญ์ผ๋ก ์ด๋์ํจ๋ค.(1๊ฐ์ Survivor ์์ญ์ ๋ฐ๋์ ๋น ์ํ๊ฐ ๋๋ค.)
- ์ด๋ฌํ ๊ณผ์ ์ ๋ฐ๋ณตํ์ฌ ๊ณ์ํด์ ์ด์๋จ์ ๊ฐ์ฒด๋ Old ์์ญ์ผ๋ก ์ด๋(Promotion)๋๋ค.
- ๊ฐ์ฒด์ ์์กด ํ์๋ฅผ ์นด์ดํธํ๊ธฐ ์ํด Minor GC์์ ๊ฐ์ฒด๊ฐ ์ด์๋จ์ ํ์๋ฅผ ์๋ฏธํ๋ age๋ฅผ Object Header์ ๊ธฐ๋กํ๋ค. ๊ทธ๋ฆฌ๊ณ Minor GC ๋ Object Header์ ๊ธฐ๋ก๋ age๋ฅผ ๋ณด๊ณ Promotion ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ๋ค. ๋ํ Survivor ์์ญ ์ค 1๊ฐ๋ ๋ฐ๋์ ์ฌ์ฉ์ด ๋์ด์ผ ํ๋ค. ๋ง์ฝ ๋ Survivor ์์ญ์ ๋ชจ๋ ๋ฐ์ดํฐ๊ฐ ์กด์ฌํ๊ฑฐ๋, ๋ชจ๋ ์ฌ์ฉ๋์ด 0์ด๋ผ๋ฉด ํ์ฌ ์์คํ ์ด ์ ์์ ์ธ ์ํฉ์ด ์๋์ ํ์ ํ ์ ์๋ค.
- ์ด๋ฌํ ์งํ ๊ณผ์ ์ ๊ทธ๋ฆผ์ผ๋ก ์ดํด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
- [ Major GC์ ๋์ ๋ฐฉ์ ]
- Young ์์ญ์์ ์ค๋ ์ด์๋จ์ ๊ฐ์ฒด๋ Old ์์ญ์ผ๋ก Promotion๋จ์ ํ์ธํ ์ ์์๋ค. ๊ทธ๋ฆฌ๊ณ Major GC๋ ๊ฐ์ฒด๋ค์ด ๊ณ์ Promotion๋์ด Old ์์ญ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํด์ง๋ฉด ๋ฐ์ํ๊ฒ ๋๋ค. Young ์์ญ์ ์ผ๋ฐ์ ์ผ๋ก Old ์์ญ๋ณด๋ค ํฌํค๊ฐ ์๊ธฐ ๋๋ฌธ์ GC๊ฐ ๋ณดํต 0.5์ด์์ 1์ด ์ฌ์ด์ ๋๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ Minor GC๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ํฌ๊ฒ ์ํฅ์ ์ฃผ์ง ์๋๋ค. ํ์ง๋ง Old ์์ญ์ Young ์์ญ๋ณด๋ค ํฌ๋ฉฐ Young ์์ญ์ ์ฐธ์กฐํ ์๋ ์๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ Major GC๋ ์ผ๋ฐ์ ์ผ๋ก Minor GC๋ณด๋ค ์๊ฐ์ด ์ค๋๊ฑธ๋ฆฌ๋ฉฐ, 10๋ฐฐ ์ด์์ ์๊ฐ์ ์ฌ์ฉํ๋ค.
- Garbage Collection(๊ฐ๋น์ง ์ปฌ๋ ์ ) ๋ด์ฉ ์์ฝ
[ Garbage Collection(๊ฐ๋น์ง ์ปฌ๋ ์ ) ๋ด์ฉ ์์ฝ ]
8. JVM์ ๊ตฌ์กฐ
- ์๋ฐ ์์ค ํ์ผ์ ์๋ฐ ์ปดํ์ผ๋ฌ์ ์ํด์ ๋ฐ์ดํธ ์ฝ๋ ํํ์ธ ํด๋์ค ํ์ผ์ด ๋๊ณ ์ด ํด๋์ค ํ์ผ์ ํด๋์ค ๋ก๋๊ฐ ์ฝ์ด๋ค์ด๋ฉด์ JVM์ด ์ํ๋๋ค.
- Class Loader : JVM ๋ด๋ก ํด๋์ค ํ์ผ์ ๋ก๋ํ๊ณ , ๋งํฌ๋ฅผ ํตํด ๋ฐฐ์นํ๋ ์์ ์ ์ํํ๋ ๋ชจ๋์ ๋๋ค. ๋ฐํ์ ์์ ๋์ ์ผ๋ก ํด๋์ค๋ฅผ ๋ก๋ํฉ๋๋ค.
- Execution Engine : ์ธํฐํ๋ฆฌํฐ ๋ฐฉ์๊ณผ JIT ์ปดํ์ผ๋ฌ๊ฐ ์์. ํด๋์ค ๋ก๋๋ฅผ ํตํด JVM ๋ด์ Runtime Data Area์ ๋ฐฐ์น๋ ๋ฐ์ดํธ ์ฝ๋๋ค์ ๋ช ๋ ์ด ๋จ์๋ก ์ฝ์ด์ ์คํ
- Interpreter ๋ฐฉ์ : ์ปดํ์ผ๋ฌ์ฒ๋ผ ๊ณ ๋ ๋ฒจ์ธ์ด๋ฅผ ๊ธฐ๊ณ์ด(์ ๋ ๋ฒจ์ธ์ด)๋ก ํด์ํด์ฃผ๋ ๋ฒ์ญ ํ๋ก๊ทธ๋จ, ์ปดํ์ผ๋ฌ๋ ์ ์ฒด ์์ค์ฝ๋๋ฅผ ๋ณด๊ณ ๋ช ๋ น์ด๋ฅผ ์์งํ๊ณ ์ฌ๊ตฌ์ฑํ๋ ๋ฐ๋ฉด ์ธํฐํ๋ฆฌํฐ๋ ์์ค์ฝ๋์ ๊ฐ ํ์ ์ฐ์์ ์ผ๋ก ๋ถ์ํ๋ฉฐ ์คํ ⇒ ๋๋ฆผ
- Jit (Just In-Time) ์ปดํ์ผ๋ฌ : JIT ์ปดํ์ผ๋ฌ๋ ๋ฐ์ดํธ ์ฝ๋๋ฅผ ์ ์ฒด๋ฅผ ์ฝ์ด ํ๊บผ๋ฒ์ ๋ณํํจ.
- ๋ชจ๋ ์ฝ๋๋ ์ด๊ธฐ์ ์ธํฐํ๋ฆฌํฐ์ ์ํด ์์๋๊ณ , ํด๋น ์ฝ๋๋ฅผ ์ถฉ๋ถํ ๋ง์ด ์ฌ์ฉํ ๊ฒฝ์ฐ JIT ์ปดํ์ผ๋ฌ์์ ์ปดํ์ผ์ ์ํ. ์ด๊ธฐ์ ์ธํฐํ๋ฆฌํธ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํธ ์ฝ๋๋ฅผ ๋ณํํ๋ฉด์ ๊ทธ ์ฝ๋๋ฅผ ์บ์ฑํ์ฌ, ๊ฐ์ ํจ์๊ฐ ์ฌ๋ฌ ๋ฒ ๋ถ๋ฆด ๋ ๋งค๋ฒ ์ฝ๋๊ฐ ์์ฑ๋๋ ๊ฒ์ ๋ฐฉ์งํจ.
- ์ด๋ ๊ฒ ์ปดํ์ผ๋ ์ฝ๋๋ฅผ ๋ค์ดํฐ๋ธ ์ฝ๋ ๋ผ๊ณ ํ๋๋ฐ ๋ค์ดํฐ๋ธ ์ฝ๋๋ ์บ์์ ๋ณด๊ด๋๊ธฐ ๋๋ฌธ์ ํ๋ฒ ์ปดํ์ผ๋ ์ฝ๋๋ ๋น ๋ฅด๊ฒ ์ํ๊ฐ๋ฅํจ. JIT ์ปดํ์ผ๋ฌ๋ JVM์ ํต์ฌ์ผ๋ก JVM ๋ด์์ ์ฑ๋ฅ์ ๊ฐ์ฅ ํฐ ์ํฅ์ ์ค๋ค.
- Garbage Collector : Garbage Collector(GC)๋ ํ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์์ฑ๋ ๊ฐ์ฒด๋ค ์ค์์ ์ฐธ์กฐ๋์ง ์์ ๊ฐ์ฒด๋ค์ ํ์ ํ ์ ๊ฑฐํ๋ ์ญํ . ์ด๋, GC๊ฐ ์ญํ ์ ํ๋ ์๊ฐ์ ์ธ์ ์ธ์ง ์ ํํ ์ ์ ์๋ค.
- Runtime Data Area : JVM์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ผ๋ก ์๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ ๋ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ๋ค์ ์ ์ฌํ๋ ์์ญ. ์ด ์์ญ์ ํฌ๊ฒ Method Area, Heap Area, Stack Area, PC Register, Native Method Stack๋ก ๋๋ ์ ์๋ค.
- 1. Method area (๋ฉ์๋ ์์ญ) : ํด๋์ค ๋ฉค๋ฒ ๋ณ์์ ์ด๋ฆ, ๋ฐ์ดํฐ ํ์ , ์ ๊ทผ ์ ์ด์ ์ ๋ณด๊ฐ์ ํ๋ ์ ๋ณด์ ๋ฉ์๋์ ์ด๋ฆ, ๋ฆฌํด ํ์ , ํ๋ผ๋ฏธํฐ, ์ ๊ทผ ์ ์ด์ ์ ๋ณด๊ฐ์ ๋ฉ์๋ ์ ๋ณด, Type์ ๋ณด(Interface์ธ์ง class์ธ์ง), Constant Pool(์์ ํ : ๋ฌธ์ ์์, ํ์ , ํ๋, ๊ฐ์ฒด ์ฐธ์กฐ๊ฐ ์ ์ฅ๋จ), static ๋ณ์, final class ๋ณ์๋ฑ์ด ์์ฑ๋๋ ์์ญ์ด๋ค.
- 2. Heap area (ํ ์์ญ) : new ํค์๋๋ก ์์ฑ๋ ๊ฐ์ฒด์ ๋ฐฐ์ด์ด ์์ฑ๋๋ ์์ญ์ด๋ค. ๋ฉ์๋ ์์ญ์ ๋ก๋๋ ํด๋์ค๋ง ์์ฑ์ด ๊ฐ๋ฅํ๊ณ Garbage Collector๊ฐ ์ฐธ์กฐ๋์ง ์๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ์ธํ๊ณ ์ ๊ฑฐํ๋ ์์ญ์ด๋ค.
- 3. Stack area (์คํ ์์ญ)
์ง์ญ ๋ณ์, ํ๋ผ๋ฏธํฐ, ๋ฆฌํด ๊ฐ, ์ฐ์ฐ์ ์ฌ์ฉ๋๋ ์์ ๊ฐ๋ฑ์ด ์์ฑ๋๋ ์์ญ์ด๋ค.
int a = 10; ์ด๋ผ๋ ์์ค๋ฅผ ์์ฑํ๋ค๋ฉด ์ ์๊ฐ์ด ํ ๋น๋ ์ ์๋ ๋ฉ๋ชจ๋ฆฌ๊ณต๊ฐ์ a๋ผ๊ณ ์ก์๋๊ณ ๊ทธ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๊ฐ์ด 10์ด ๋ค์ด๊ฐ๋ค. ์ฆ, ์คํ์ ๋ฉ๋ชจ๋ฆฌ์ ์ด๋ฆ์ด a๋ผ๊ณ ๋ถ์ฌ์ฃผ๊ณ ๊ฐ์ด 10์ธ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๋ง๋ ๋ค.
ํด๋์ค Person p = new Person(); ์ด๋ผ๋ ์์ค๋ฅผ ์์ฑํ๋ค๋ฉด Person p๋ ์คํ ์์ญ์ ์์ฑ๋๊ณ new๋ก ์์ฑ๋ Person ํด๋์ค์ ์ธ์คํด์ค๋ ํ ์์ญ์ ์์ฑ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์คํ์์ญ์ ์์ฑ๋ p์ ๊ฐ์ผ๋ก ํ ์์ญ์ ์ฃผ์๊ฐ์ ๊ฐ์ง๊ณ ์๋ค. ์ฆ, ์คํ ์์ญ์ ์์ฑ๋ p๊ฐ ํ ์์ญ์ ์์ฑ๋ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํค๊ณ (์ฐธ์กฐํ๊ณ ) ์๋ ๊ฒ์ด๋ค.
๋ฉ์๋๋ฅผ ํธ์ถํ ๋๋ง๋ค ๊ฐ๋ณ์ ์ผ๋ก ์คํ์ด ์์ฑ๋๋ค.
- 4. PC Register (PC ๋ ์ง์คํฐ)
Thread(์ฐ๋ ๋)๊ฐ ์์ฑ๋ ๋๋ง๋ค ์์ฑ๋๋ ์์ญ์ผ๋ก Program Counter ์ฆ, ํ์ฌ ์ฐ๋ ๋๊ฐ ์คํ๋๋ ๋ถ๋ถ์ ์ฃผ์์ ๋ช ๋ น์ ์ ์ฅํ๊ณ ์๋ ์์ญ์ด๋ค. (*CPU์ ๋ ์ง์คํฐ์ ๋ค๋ฆ)
์ด๊ฒ์ ์ด์ฉํด์ ์ฐ๋ ๋๋ฅผ ๋์๊ฐ๋ฉด์ ์ํํ ์ ์๊ฒ ํ๋ค.
- 5. Native method stack
์๋ฐ ์ธ ์ธ์ด๋ก ์์ฑ๋ ๋ค์ดํฐ๋ธ ์ฝ๋๋ฅผ ์ํ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ด๋ค.
๋ณดํต C/C++๋ฑ์ ์ฝ๋๋ฅผ ์ํํ๊ธฐ ์ํ ์คํ์ด๋ค. (JNI)
- ์ฐ๋ ๋๊ฐ ์์ฑ๋์์ ๋ ๊ธฐ์ค์ผ๋ก 1,2๋ฒ์ธ ๋ฉ์๋ ์์ญ๊ณผ ํ ์์ญ์ ๋ชจ๋ ์ฐ๋ ๋๊ฐ ๊ณต์ ํ๊ณ , 3,4,5๋ฒ์ธ ์คํ ์์ญ๊ณผ PC ๋ ์ง์คํฐ, Native method stack์ ๊ฐ๊ฐ์ ์ฐ๋ ๋๋ง๋ค ์์ฑ๋๊ณ ๊ณต์ ๋์ง ์๋๋ค.
9. ๊ฐ์ฒด์งํฅ ํ์ค ์ ๋ฆฌ
- ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ปดํจํฐ ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์ ์ค ํ๋๋ก, ํ๋ก๊ทธ๋๋ฐ์์ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ์ถ์ํ์์ผ ์ํ์ ํ์๋ฅผ ๊ฐ์ง ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ณ ๊ทธ ๊ฐ์ฒด๋ค ๊ฐ์ ์ ๊ธฐ์ ์ธ ์ํธ์์ฉ์ ํตํด ๋ก์ง์ ๊ตฌ์ฑํ๋ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ๋ฒ
- ์ฅ์ :
- ⇒ ์ฝ๋ ์ฌ์ฌ์ฉ์ด ์ฉ์ด : ์์์ ํตํด ํ์ฅ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๊ณ , ๋ฐฐํฌ๋ ํด๋์ค๋ฅผ ์ด์ฉ ๊ฐ๋ฅ.
- ⇒ ์ ์ง๋ณด์๊ฐ ์ฌ์ : ์ ์ฐจ์ ํ๋ก๊ทธ๋๋ฐ์์๋ ์ฝ๋๋ฅผ ์์ ์ ์ผ์ผํ ์ฐพ์ ์์ ํด์ผ ํ์ง๋ง ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์์๋ ์์ ํด์ผ ํ ๋ถ๋ถ์ด ํด๋์ค ๋ด๋ถ์ ๋ณ์ ํน์ ๋ฉ์๋๋ก ์กด์ฌํ๊ธฐ ๋๋ฌธ์ ํด๋น ๋ถ๋ถ๋ง ์์ ํ๋ฉด ๋๊ธฐ ๋๋ฌธ์ด๋ค.
- ⇒ ๋ํ ํ๋ก์ ํธ์ ์ ํฉ : ํด๋์ค ๋จ์๋ก ๋ชจ๋ํ์์ผ์ ๊ฐ๋ฐํ ์ ์์ผ๋ฏ๋ก ๋ํ ํ๋ก์ ํธ์ฒ๋ผ ์ฌ๋ฌ ๋ช , ์ฌ๋ฌ ํ์ฌ์์ ํ๋ก์ ํธ๋ฅผ ๊ฐ๋ฐํ ๋ ์ ๋ฌด ๋ถ๋ดํ๊ธฐ ์ฝ๋ค.
- ๋จ์ :
- ⇒ ์ฒ๋ฆฌ ์๋๊ฐ ์๋์ ์ผ๋ก ๋๋ฆผ
- ⇒ ๊ฐ์ฒด๊ฐ ๋ง์ผ๋ฉด ์ฉ๋์ด ์ปค์ง ์ ์์
- ⇒ ์ค๊ณ ์ ๋ง์ ์๊ฐ๊ณผ ๋ ธ๋ ฅ์ด ํ์
- ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ ํค์๋ 5๊ฐ์ง
- ํด๋์ค + ์ธ์คํด์ค(๊ฐ์ฒด) : ํด๋์ค → ๋ฐ์ดํฐ๋ฅผ ๋ง๋ค๊ธฐ ์ํด ์ถ์ํ๋ฅผ ๊ฑฐ์ณ ์ง๋จ์ ์ํ๋ ์์ฑ(attribute)๊ณผ ํ์(behavior)๋ฅผ ๋ณ์์ ๋ฉ์๋๋ก ์ ์ํ ๊ฒ, ์ธ์คํด์ค(๊ฐ์ฒด) → ํด๋์ค์์ ์ ์ํ ๊ฒ์ ํ ๋๋ก ์ค์ ๋ฉ๋ชจ๋ฆฌ์ ํ ๋น๋ ๊ฒ
- ์ถ์ํ : ํด๋์ค๋ฅผ ์ค๊ณํ๋ ๊ฒ ์์ฒด๋ฅผ ์๋ฏธ, ๊ณตํต์ ์์ฑ์ด๋ ๊ธฐ๋ฅ์ ๋ฌถ์ด ์ด๋ฆ์ ๋ถ์ด๋ ๊ฒ. ex) ์ถ์ ํด๋์ค ๊ฐ์ ๋๋ : ํํ์ ์์ฑ๋ง ๋ถ๊ฐ ์ํค๋ ๊ฒ, ๋ก ๋ผ๋ฉด, ๋ง๋ ๋ผ๋ฉด
- ์บก์ํ : ์บก์ํ์ ๋ชฉ์ 2๊ฐ์ง
- ⇒ ์ฝ๋๋ฅผ ์ฌ์์ ์์ด ์ฌํ์ฉ ํ๋ ๊ฒ
- ⇒ ์ ๊ทผ ์ ์ด์๋ฅผ ํตํ ์ ๋ณด ์๋
- ์บก์ํ๋ฅผ ํตํด ๊ฐ์ฒด๊ฐ ์ธ๋ถ์ ๋ ธ์ถํ์ง ์์์ผ ํ ์ ๋ณด ๋๋ ๊ธฐ๋ฅ์ ์ ๊ทผ ์ ์ด์๋ฅผ ํตํด ์ ์ ํ ์ ์ด ๊ถํ์ด ์๋ ๊ฐ์ฒด์์๋ง ์ ๊ทผ ๊ฐ๋ฅํ๋ค.
- ๊ด๋ จ๋ ๊ธฐ๋ฅ๊ณผ ํน์ฑ์ ํ ๊ณณ์ ๋ชจ์ผ๊ณ ๋ถ๋ฅํ๊ธฐ ๋๋ฌธ์ ๊ฐ์ฒด ์ฌํ์ฉ์ด ์ํ ํด์ก๋ค. ๊ธฐ๋ฅ๊ณผ ํน์ฑ์ ๋ชจ์์ “ํด๋์ค”๋ผ๋ “์บก์”์ ๋ถ๋ฅํด์ ๋ฃ๋ ๊ฒ์ด ์บก์ํ. ๊ฐ์ฒด๊ฐ ๋งก์ ์ญํ ์ ์ํํ๊ธฐ ์ํ ํ๋์ ๋ชฉ์ ์ ํ๋ฐ ๋ฌถ๋๋ค.
- ์์ : ๋ถ๋ชจํด๋์ค์ ์์ฑ๊ณผ ๊ธฐ๋ฅ์ ๊ทธ๋๋ก ์ด์ด๋ฐ์ ์ฌ์ฉํ ์ ์๊ฒํ๊ณ ๊ธฐ
- ๋ฅ์ ์ผ๋ถ๋ถ์ ๋ณ๊ฒฝํด์ผ ํ ๊ฒฝ์ฐ ์์๋ฐ์ ์์ํด๋์ค์์ ํด๋น ๊ธฐ๋ฅ๋ง ๋ค์ ์์ (์ ์)ํ์ฌ ์ฌ์ฉํ ์ ์๊ฒ ํ๋ ๊ฒ
- ๋คํ์ฑ : ํ๋์ ๋ณ์๋ช , ํจ์๋ช ๋ฑ์ด ์ํฉ์ ๋ฐ๋ผ ๋ค๋ฅธ ์๋ฏธ๋ก ํด์๋ ์ ์๋ ๊ฒ
- ์ค๋ฒ๋ผ์ด๋ฉ ****: ๋ถ๋ชจํด๋์ค์ ๋ฉ์๋์ ๊ฐ์ ์ด๋ฆ, ๋งค๊ฐ๋ณ์๋ฅผ ์ฌ์ ์ ํ๋๊ฒ.
- ์ค๋ฒ๋ก๋ฉ ****: ๊ฐ์ ์ด๋ฆ์ ํจ์๋ฅผ ์ฌ๋ฌ๊ฐ ์ ์ํ๊ณ , ๋งค๊ฐ๋ณ์์ ํ์ ๊ณผ ๊ฐ์๋ฅผ ๋ค๋ฅด๊ฒ ํ์ฌ ๋งค๊ฐ๋ณ์์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ํธ์ถํ ์ ์๊ฒ ํ๋ ๊ฒ.
10. primitive type & reference type ์ฐจ์ด์
- Boxing, Unboxing
- **Boxing(๋ฐ์ฑ)**์ ์์ ํ์ ์ ์ฐธ์กฐ ํ์ ์ผ๋ก ๋ณํ ์ํค๋ ๊ฒ์ ๋งํ๊ณ , **Unboxing(์ธ๋ฐ์ฑ)**์ ์ฐธ์กฐ ํ์ ์ ์์ ํ์ ์ผ๋ก ๋ณํ ์ํค๋ ๊ฒ์ ๋งํ๋ค.
- ์๋ฐ 1.5 ์ด์ ์๋ ์ผ์ผํ ๋ณํ ๊ณผ์ ์ ๊ฑฐ์ณ์ฃผ์ด์ผ ํ์ง๋ง, ์๋ฐ 1.5๋ถํฐ ์ถ๊ฐ๋ Auto Boxing / Unboxing ๊ธฐ๋ฅ์ผ๋ก ์๋์ ์์์ ๊ฐ์ด ๋ช ์์ ์ผ๋ก ์์ํ์ ์ ์ฐธ์กฐํ์ ์ผ๋ก ๊ฐ์ธ์ฃผ์ง ์์๋ ์๋์ผ๋ก Boxing / Unboxing ํด์ค๋ค. ⇒ ๋ฉ๋ชจ๋ฆฌ ๋์์ ์์ธ์ด ๋จ.
- Null ํฌํจ ๊ฐ๋ฅ ์ฌ๋ถ
- ์์ํ์ ์ null์ ๋ด์ ์ ์์ง๋ง, ์ฐธ์กฐ ํ์ ์ ๊ฐ๋ฅํ๋ค.
- ์ ๋๋ฆญ ํ์ ์์ ์ฌ์ฉ ๊ฐ๋ฅ ์ฌ๋ถ
- ์์ํ์ ์ ์ ๋๋ฆญ ํ์ ์์ ์ฌ์ฉํ ์ ์์ง๋ง, ์ฐธ์กฐ ํ์ ์ ๊ฐ๋ฅํ๋ค.
- Wrapper ํด๋์ค๋ฅผ ์ฌ์ฉํ๋ ์ด์
- ๊ธฐ๋ณธํ ๋ณ์๋ฅผ ๊ฐ์ฒด๋ก ๋ค๋ฃจ๊ธฐ ์ํด์ (๋งค๊ฐ๋ณ์๋ก ๊ฐ์ฒด๋ฅผ ์๊ตฌํ ๋, ๊ธฐ๋ณธํ ๊ฐ์ด ์๋ ๊ฐ์ฒด๋ก ์ ์ฅํด์ผํ ๋, ๊ฐ์ฒด๊ฐ์ ๋น๊ต๊ฐ ํ์ํ ๋ ๋ฑ๋ฑ)