๐ ์ค๋ ๋ฐฐ์ด ๋ด์ฉ!
- ์ค๋ ๋
- JVM
โ๏ธ ํ๋ก์ธ์ค (Process)
- ์คํ ์ค์ธ ์ ํ๋ฆฌ์ผ์ด์
- ๋ฐ์ดํฐ, ์ปดํจํฐ ์์, ์ค๋ ๋๋ก ๊ตฌ์ฑ
โ๏ธ ์ค๋ ๋ (Thread)
- ํ๋์ ์ฝ๋ ์คํ ํ๋ฆ
โ ๋ฉ์ธ ์ค๋ ๋(Main thread)
- Main ์์ ์คํ๋๋ ์ค๋ ๋
โ ์์ ์ค๋ ๋
- ๋ฉ์ธ ์ค๋ ๋ ์ธ์ ๋ณ๋์ ์ค๋ ๋
โ ๋ฉํฐ ์ค๋ ๋(Multi-Thread)
- ํ๋์ ํ๋ก์ธ์ค์ ์ฌ๋ฌ๊ฐ์ ์ค๋ ๋๋ฅผ ๊ฐ์ง๋ ๊ฒ โ ๋ฉํฐ ์ค๋ ๋ ํ๋ก์ธ์ค
- ๋ฉํฐ ํ์คํน(๋์์ ์ฌ๋ฌ์์
) ๊ตฌํํ๋๋ฐ ํต์ฌ์ ์ธ ์ญํ
(๋ฉํฐ ์ค๋ ๋ฉ - ์ฌ๋ฌ ์ค๋ ๋๊ฐ ๋์์ ์์ ์ ์ํํ๋ ๊ฒ)
โ ๋ฉ์ธ ์ค๋ ๋ ํ์ฉ
- ๊ทธ๋ฅ ๋ฉ์ธ์ ์คํํ ์ฝ๋ ์ฐ๋ฉด ๋จ
โ๏ธ ์์ ์ค๋ ๋ ํ์ฉ
- ์ฝ๋ ์์ฑํ ๊ณต๊ฐ ๋ง๋ค๊ธฐ (๋ฌ๋๋ธ ์ธํฐํ์ด์ค ๊ตฌํ / ์ค๋ ๋ ํด๋์ค ์์)
- ์ฝ๋ ์์ฑ
- ์ค๋ ๋ ์์ฑ
- ์ค๋ ๋ ์คํ (
์ค๋ ๋ ์ฐธ์กฐ๊ฐ.start()
)
๐ก start() ๋ฉ์๋ ์ด์ฉํด์ ์คํํ๋ฉด ๋ฐ๋ก ์คํ๋๋ ๊ฒ์ด ์๋๋ผ ์คํ ๋๊ธฐ ์ํ๊ฐ ๋๊ณ ,
์คํ์ ์ด์์ฒด์ ์ ๊ณํ์ ๋ฐ๋ผ ์ด์์ฒด์ ๊ฐ ์คํ !
โ๏ธ ์์ ์ค๋ ๋ ์์ฑ ๋ฐฉ๋ฒ 3๊ฐ์ง
- Runnable ์ธํฐํ์ด์ค ๊ตฌํํ ํด๋์ค์์ run() ๋ฉ์๋ ์ค๋ฒ๋ผ์ด๋ฉํด์ ์ฌ์ ์
(Run() ๋ฉ์๋ ์์ ์ฝ๋ ์์ฑ)
โ Thread๋ฅผ ์์๋ฐ์ ๊ฒ์ด ์๋๊ธฐ ๋๋ฌธ์ Thread ํด๋์ค๋ฅผ ์ง์ ์ธ์คํด์คํ ํ๋ฉด์ Runnable์ ๊ตฌํํ ๊ฐ์ฒด๋ฅผ ์ธ์๋ก ๋ฐ์์ผํจ
- Thread ํด๋์ค ์์๋ฐ์ ํ์ ํด๋์ค์์ run() ๋ฉ์๋ ์ค๋ฒ๋ผ์ด๋ฉํด์ ์ฌ์ ์
(Run() ๋ฉ์๋ ์์ ์ฝ๋ ์์ฑ)
โ Thread ํด๋์ค ์ง์ ์ธ์คํด์คํ ํ ํ์ ์๊ณ ๋ฐ๋ก ๊ตฌํํด์ฃผ๋ฉด ๋จ
- ์ต๋ช ์ Runnable ๊ตฌํ ๊ฐ์ฒด๋ฅผ ํ์ฉํ์ฌ Thread๋ฅผ ์์ฑ ํ ๊ทธ ์์ run() ๋ฉ์๋ ์ ์ด์ค
๐ก Runnerble ์ธํฐํ์ด์ค
- ์ถ์๋ฉ์๋๋ก ์ ์๋์ด ์์
(์ค๋ ๋์๊ฒ ์์ ๋งก๊ธฐ๋ ค๋ฉด ๋ฌด์กฐ๊ฑด ์ด ์ธํฐํ์ด์ค ๊ตฌํํด์ผํจ)
- Thread ํด๋์ค๋ Runnable ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ํด๋์ค์
โ๏ธ ๋ฉ์ธ ์ค๋ ๋์ ์์ ์ค๋ ๋๋ฅผ ๋์์ ์คํํ ๊ฒฝ์ฐ
๋ ์ค๋ ๋๊ฐ ๋ณ๋ ฌ๋ก ๋์ ์คํ๋์ด ๋ ๋ฉ์๋์ ๋ฐํ๊ฐ๋ค์ด ๋๋ค์ ์์๋ก ์ถ๋ ฅ๋จ
โ ์์๋ฅผ ์ ํด์ค ํ์๊ฐ ์์ !
๐ก ์ค๋ฅ๊ฐ ๋ฐ์ํ์ ๊ฒฝ์ฐ ํ์ธ์ ์ํด ๋ง์ด ์ฐ์ด๋ ๋ฉ์๋
- ์ค๋ ๋ ์ด๋ฆ ์กฐํ - ์ค๋ ๋ ์ฐธ์กฐ๊ฐ.getName()
โ ๋ฉ์ธ ์ค๋ ๋์ ์ด๋ฆ : Main
โ ์์ ์ค๋ ๋์ ์ด๋ฆ : Thread - ์ซ์
- ์ค๋ ๋ ์ด๋ฆ ์ค์ - ์ค๋ ๋ ์ฐธ์กฐ๊ฐ.setName()
- ์ค๋ ๋ ์ธ์คํด์ค์ ์ฃผ์๊ฐ ์ป๊ธฐ - Thread.currentThread()
โ ์คํ๋๊ณ ์๋ ๊ทธ ์์น์ Thread๋ฅผ ๋ฆฌํด
- ์ค๋ ๋ ์ํ ํ์ธ - ์ค๋ ๋ ์ฐธ์กฐ๊ฐ.getState()
โ start() ๋ฉ์๋๋ก ์คํํ๊ธฐ ์ ๊น์ง๋ new ์ํ
โ ์คํ ํ์๋ runnable ์ํ
โ Thread๊ฐ ๋ชจ๋ ์ข ๋ฃ๋ ํ์๋ terminate ์ํ
โ๏ธ ์ค๋ ๋ ๋๊ธฐํ
- ๋ฉํฐ ์ค๋ ๋ ํ๋ก์ธ์ค ์ํฉ์์ ์์๊ฐ ์ ํด์ ธ ์์ง ์๊ณ ๋ ์ค๋ ๋๊ฐ ๋ณ๋ ฌ์ ์ผ๋ก ์คํ๋๋ฉด์ ๋๋ ์ค๋ฅ๋ฅผ ๋ฐฉ์งํ๋ ๊ฒ
โ ์๊ณ์์ญ์ ์ค์ ํด์ค์ผํจ
๋๊ธฐํ ๋ธ๋ญ์๋ ๊ทธ๋ฅ this๊ฐ ๋ค์ด๊ฐ๋ค ์๊ฐํด. ๋ค๋ฅธ ๊ฑฐ ๋ค์ด๊ฐ๋ ๊ฑฐ ๊ฑฐ์ ๋ชป๋ดค๋.
โ ์๊ณ์์ญ
- ์ค๋ก์ง ํ๋์ ์ค๋ ๋๋ง ์คํํ ์ ์๋ ์ฝ๋ ์์ญ
(์ฌ๋ฌ ์ค๋ ๋๊ฐ ์์ด๋ ์๊ณ์์ญ์์๋ ํ๋๋ง ์คํ)
โ ๋ฝ
- ์๊ณ์์ญ์์ ๊ฐ์ฒด์ ์ ๊ทผํ ์ ์๋ ๊ถํ
(ํ ์ค๋ ๋๊ฐ ์๊ณ์์ญ ๋ด์ ์ฝ๋๋ฅผ ์คํ์ค์ผ ๋, ๋ค๋ฅธ ์ค๋ ๋๋ค์ ๋ฝ์ด ์์ผ๋ฉด ๊ทธ ๊ฐ์ฒด์ ์๊ณ์์ญ ๋ด์ ์ฝ๋๋ฅผ ์คํํ ์ ์์ โ ๊ทธ ์ค๋ ๋๊ฐ ์์ญ ๋ด ์ฝ๋๋ฅผ ๋ชจ๋ ์คํํ๋ฉด ๋ฝ ๋ฐ๋จํจ โ ์ด์ ๋ค๋ฅธ ์ค๋ ๋๋ค ์ค ํ๋๊ฐ ๋ค์ ๋ฝ ๊ถํ ํ๋ํ์ฌ ์ฝ๋ ์คํ)
โ๏ธ ์๊ณ์์ญ ์ค์
โ synchronized
ํค์๋
- ๋ฉ์๋ ์ ์ฒด๋ฅผ ์๊ณ์์ญ์ผ๋ก
โ ๋ฉ์๋ ๋ฐํํ์ ์ข์ธก์synchronized
- ๋ฉ์๋ ๋ด ํน์ ์์ญ๋ง ์๊ณ์์ญ์ผ๋ก
โ ๋ฉ์๋ {} ๋ด์synchronized(ํด๋น ์์ญ์ด ํฌํจ๋ ๊ฐ์ฒด์ ์ฐธ์กฐ this) {์คํํ ์ฝ๋}
โ๏ธ ์ค๋ ๋ ์คํ ์ ์ด ๋ฉ์๋
โ sleep(long milliSecond)
- milliSecond ๋์ ์ค๋ ๋๋ฅผ ์ ์ ๋ฉ์ถค(์คํ ์ํ์์ ์ผ์ ์ ์ง(TIMED_WAITING) ์ํ๋ก ์ ํ)(์๊ฐ์ ์ฝ๊ฐ์ ์ค์ฐจ๋ฅผ ๊ฐ์ง)
- Thread์ ํด๋์ค ๋ฉ์๋์ด๊ธฐ ๋๋ฌธ์ ํด๋์ค๋ฅผ ํตํด
Thread.sleep(์๊ฐ);
์ผ๋ก ํธ์ถ - ์ธ์๋ก ์ ๋ฌํ ์๊ฐ๋งํผ์ ์๊ฐ์ด ๊ฒฝ๊ณผํ ๊ฒฝ์ฐ /
interrupt()
ํธ์ถํ ๊ฒฝ์ฐ ์คํ๋๊ธฐ ์ํ๋ก ๋ณต๊ท - try{ Thread.sleep(์๊ฐ); } catch () { ์คํ๋ฌธ } ์ด๋ ๊ฒ ๊ฐ์ธ์ ์คํํด์ค์ผํจ
โ interrupt()
- ์ผ์ ์ค์ง ์ํ์ธ ์ค๋ ๋๋ฅผ ์คํ ๋๊ธฐ ์ํ(Runnable)๋ก ๋ณต๊ท์ํด
- ๋ฉ์ถ ์ค๋ ๋๋ง๊ณ ๋ค๋ฅธ ์ค๋ ๋์์
๋ฉ์ถฐ ์๋ ์ค๋ ๋.interrupt()
ํธ์ถํ๋ฉด, ๊ธฐ์กด์ ํธ์ถ๋์ด ์ค๋ ๋๋ฅผ ๋ฉ์ถ๊ฒ ํ๋ ๋ฉ์๋์์ ์์ธ๊ฐ ๋ฐ์๋๊ณ , ๊ทธ์ ๋ฐ๋ผ ์ผ์ ์ ์ง๊ฐ ํ๋ฆฌ๊ฒ ๋จ
โ yield()
- ์ด์์ฒด์ ์ ์ค์ผ์ค๋ฌ์๊ฒ ํ ๋น๋ฐ์ ์๊ฐ์ ํ ์ค๋ ๋๊ฐ ์ํํ๋ค๊ฐ yield() ํธ์ถํ๋ฉด ๋จ์ ์๊ฐ์ ๋ค์ ์ค๋ ๋์๊ฒ ์๋ณด
- while๋ฌธ์์ ๋ฌด์๋ฏธํ ๋ฐ๋ณต์ด๋๊ณ ์์ ๋, yield() ํธ์ถํ๋ฉด ๋ฐ๋ณต์ ๋ฉ์ถ๊ณ ์คํ๋๊ธฐ ์ํ๋ก ๋ฐ๋
โ ๋จ์ ์คํ์๊ฐ์ ๋๊ธฐ์ด ์ ์ฐ์ ์์๊ฐ ๋์ ๋ค๋ฅธ ์ค๋ ๋์๊ฒ ์๋ณด
โ join()
- ํน์ ์ค๋ ๋๊ฐ ์์ ํ๋ ๋์ ์์ ์ ์ผ์์ค์ง ์ํ๋ก ๋ง๋ค์ด ์์ ์ด ๋๋ ๋๊น์ง ๊ธฐ๋ค๋ฆผ
- ์ธ์๋ก ์๊ฐ์ ๋ฐ๋ฆฌ์ด ๋จ์๋ก ์ ๋ฌ ๊ฐ๋ฅ
โ๏ธ join()๊ณผ sleep()
1. ๊ณตํต์
- ํธ์ถํ๋ฉด ์ผ์์ ์ง ์ํ๊ฐ ๋จ
- try...catch๋ฌธ์ผ๋ก ๊ฐ์ธ์ ์ฌ์ฉ
- interrupt()๋ก ์คํ๋๊ธฐ ์ํ๋ก ๋ณต๊ท
2. ์ฐจ์ด์
- sleep()
โ Thread ํด๋์ค์ static ๋ฉ์๋
- join()
โ ํน์ ์ค๋ ๋์๋ํด ๋์ํ๋ ์ธ์คํด์ค ๋ฉ์๋
- wait(), notify()
โ ๋ ์ค๋ ๋๊ฐ ๊ต๋๋ก ์์ ์ ์ฒ๋ฆฌํด์ผํ ๋ ์ฌ์ฉ
์ค๋ ๋1์ด ์๊ธฐ ์์ ์๋ฃ โ ์ค๋ ๋1์ด notify() ํธ์ถ (๋ ํด๋ผ) โ ์ค๋ ๋2๊ฐ ์คํ ๋๊ธฐ ์ํ๋จ โ ๊ณง ์ค๋ ๋2 ์คํ
โ ์ค๋ ๋1์ด wait() ํธ์ถ (๋ ๋ฉ์ถฐ์ ๊ธฐ๋ค๋ฆด๊ฒ) โ ์๊ธฐ ์์ ์ด ์ผ์์ ์ง ์ํ๊ฐ ๋จ โ ์ค๋ ๋2๊ฐ ์๊ธฐ ์์ ์๋ฃ โ notify(),wait() ๋ฐ๋ณต
โ๏ธ JVM(Java Virtual Machine)
- ์๋ฐ๋ก ์์ฑํ ์์ค ์ฝ๋๋ฅผ ํด์ํด ์คํํ๋ ๋ณ๋์ ํ๋ก๊ทธ๋จ
โ๏ธ Java๊ฐ ์ด์์ฒด์ ๋ก๋ถํฐ ๋ ๋ฆฝ์ ์ผ ์ ์๋ ์ด์
โ JVM(Java Virtual Machine)์ด๋ผ๋ ์ ๊ฐ ์ด์์ฒด์ ๋ง๋ค Java ์์ค ์ฝ๋๋ฅผ ์ด์์ฒด์ ์ ๋ง๊ฒ ๋ณํํด์ ์คํ์์ผ์ฃผ์ด ์ด์์ฒด์ ์ ๋
๋ฆฝ์ ์ผ๋ก ๋์ํจ
(์ด์์ฒด์ ์ Java ์ฌ์ด์ ๋ค๋ฆฌ๊ฐ JVM)
โ JVM์ด ์ด์์ฒด์ ํํ
ํ์ํ ์ปดํจํฐ ์์ ์ฃผ๋ฌธ โ ์ด์์ฒด์ ๊ฐ ๊ฐ์ฉ ์์ ํ์ธ ํ JVM์๊ฒ ํ ๋น
(์ฌ๊ธฐ์ ํ ๋น๋ฐ์ ๊ฒ => ๋ฐํ์ ๋ฐ์ดํฐ ์์ญ(Runtime Data Area))
โ๏ธ ์์ค์ฝ๋๊ฐ JVM์ผ๋ก ๋ค์ด๊ฐ๋ ๊ณผ์
- Java๋ก ์์ค์ฝ๋ ์์ฑ/์คํ
- ์ปดํ์ผ๋ฌ ์คํ๋๋ฉด์ ์ปดํ์ผ ์งํ
- ์ปดํ์ผ ๊ฒฐ๊ณผ๋ก .java ํ์ฅ์ ๊ฐ์ก๋ ์์ค์ฝ๋๊ฐ .class ํ์ฅ์ ๊ฐ์ง ๋ฐ์ดํธ ์ฝ๋ ํ์ผ๋ก ๋ณํ๋จ
- JVM์ด ์ด์์ฒด์ ๋ก๋ถํฐ ์์ค ์ฝ๋ ์คํ์ ํ์ํ ๋ฉ๋ชจ๋ฆฌ ํ ๋น๋ฐ์
- ํด๋์ค ๋ก๋(Class Loader)๊ฐ ๋ณํ๋ ์ฝ๋ ํ์ผ์ JVM ๋ด๋ถ๋ก ๋ถ๋ฌ๋ค์ฌ ๋ฐํ์ ๋ฐ์ดํฐ ์์ญ(Runtime Data Area)์ ์ ์ฌ (๋ฉ๋ชจ๋ฆฌ์ ๋ก๋ ์ํค๋ ๊ฒ)
- ์คํ ์์ง(Execution Engine)์ด ์ ์ฌ๋ ๋ฐ์ดํธ ์ฝ๋๋ฅผ ์คํ์ํด(2๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก)
โ ๊ธฐ๋ณธ์ ์ผ๋ก ์ธํฐํ๋ฆฌํฐ(Interpreter) ํตํด ์ฝ๋๋ฅผ ํ ์ค์ฉ ๊ธฐ๊ณ์ด๋ก ๋ฒ์ญํ๊ณ ์คํ
โ ์ค๋ณต์ ์ผ๋ก ์ด๋ค ๋ฐ์ดํธ ์ฝ๋๊ฐ ๋ฑ์ฅํ ๋, JIT Compiler(Just-In-Time Compiler) ํตํด ๋ฐ์ดํธ ์ฝ๋ ์ ์ฒด๋ฅผ ๊ธฐ๊ณ์ด๋ก ๋ฒ์ญํ๊ณ ์คํ
โ๏ธ JVM ๊ตฌ์กฐ
โ๏ธ ๋ฐํ์ ๋ฐ์ดํฐ ์์ญ(Runtime Data Area)
- JVM์ ํ๋ก๊ทธ๋จ์ด ๋ก๋๋์ด ์คํ๋ ๋ ํน์ ๊ฐ, ๋ณ์ ๋ฑ์ ๋ฐ์ดํฐ๋ค์ด ์ ์ฅ๋๋ ๊ณณ
- ์ ์ฌ์ง๊ณผ ๊ฐ์ด 5๊ฐ์ง ์์ญ์ผ๋ก ๊ตฌ๋ถ๋จ
1. Stack ์์ญ
- ๋ฉ์๋ ํธ์ถ โ ๊ทธ ๋ฉ์๋๋ฅผ ์ํ Method Frame์ด๋ผ๋ ๊ณต๊ฐ ์์ฑ โ ๊ทธ ๊ณต๊ฐ์ ์ฐ์ฐ์ ์ผ์ด๋๋ ๊ฐ๋ค์ด ์์ ์ ์ฅ โ Stack์ ์ด Method Frame์ด ํธ์ถ์์ผ๋ก ์์ด๊ฒ ๋จ (๋จผ์ ํธ์ถ๋๋ฉด ๋งจ ๋ฐ)(LIFO(Last In First Out)) โ ๋ฉ์๋ ๋์ ์๋ฃ๋๋ฉด ์ญ์์ผ๋ก(๊ฐ์ฅ ๋ง์ง๋ง์ ํธ์ถ๋ ๊ฒ๋ถํฐ) ์ ๊ฑฐ๋จ
๐ก LIFO(Last In First Out)๋?
- ๋ง์ง๋ง์ ๋ค์ด๊ฐ ๋ฐ์ดํฐ๊ฐ ๊ฐ์ฅ ๋จผ์ ๋์จ๋ค
- Stack์ ๋ฐ์ดํฐ ์ ์ถ๋ ฅ ์์๋ฅผ ๋ํ๋ด๋ ์์น
Ex. ํ๋ง๊ธ์ค
2. Heap ์์ญ
- ๊ฐ์ฒด ์์ฑ ํ ๊ฐ์ฒด ์คํ
โ Heap ์์ญ์ ์ธ์คํด์ค๊ฐ ์์ฑ๋๊ณ ๊ทธ ์์น์ ์ฃผ์๊ฐ์ ๊ฐ์ฒด์ ์ฐธ์กฐ๋ณ์์ ํ ๋นํด์ค
(๊ทธ ์ฐธ์กฐ๋ณ์๋ Stack ์์ญ์์ ์ ์ธ๋ ๋ณ์) - Heap์์ญ ๊ฐ์ฒด๋ ๋๋ถ๋ถ ์ผํ์ฑ (๋ฉ๋ชจ๋ฆฌ์ ๋จ์์๋ ๊ธฐ๊ฐ์ด ๋๋ถ๋ถ ์งง์)
โ ๊ทธ ๊ฐ์ฒด์ ์กด์ฌ ๊ธฐ๊ฐ์ ๋ฐ๋ผ Heap์์ญ ์์์๋ Old์ Young์ผ๋ก ์์ญ์ด ๋๋จ
3. Method ์์ญ
4. PC register
5. Native Method Stack
โ๏ธ ๊ฐ์ฒด๋ฅผ ๋ค๋ฃฌ๋ค
โ Stack ์์ญ์ ์ ์ฅ๋์ด์๋ ์ฐธ์กฐ๋ณ์๋ฅผ ํตํด Heap ์์ญ์ ์กด์ฌํ๋ ๊ฐ์ฒด๋ฅผ ๋ค๋ฃฌ๋ค
(Stack์ ์ฐธ์กฐ๊ฐ, Heap์ ๋ฐ์ดํฐ โ new์ฐ์ฐ์๋ก Heap์ ์ ์ฅ๋ ์ฐธ์กฐ๊ฐ์ ๋ฆฌํดํจ)
โ๏ธ Garbage Collection
- ํ๋ก๊ทธ๋จ์์ ์๋ฌดํํ ๋ ์ฐธ์กฐ๋๊ณ ์์ง ์๋ ๋์ด์ ์ฌ์ฉํ์ง ์๋ ๊ฐ์ฒด/๋ณ์๋ค์ ์ฐพ์ ๋ฉ๋ชจ๋ฆฌ์์ ์ ์ ๋ฅผ ํด์ ์ํด โ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ ํ๋ณด, ํจ์จ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ ๊ฐ๋ฅ
โ Garbage Collection์ ๋์ ๋ฐฉ์
- Stop The World๋ฅผ ํตํด ๊ฐ๋น์ง ์ปฌ๋ ์ ์ ์คํํ๋ ์ค๋ ๋ ์ ์ธํ๊ณ ๋ค๋ฅธ ๋ชจ๋ ์ค๋ ๋ ์์ ์ค๋จ์ํด โ ๊ฐ๋น์ง ์ปฌ๋ ์ ์ด ๋ชจ๋ ๋ณ์/๊ฐ์ฒด ํ์ํด์ ๊ฐ๊ฐ ์ด๋ค ๊ฐ์ฒด ์ฐธ๊ณ ํ๊ณ ์๋์ง ํ์ธ โ ์ฌ์ฉ๋๊ณ ์๋ ๋ฉ๋ชจ๋ฆฌ ์๋ณ(Mark)ํด์ ์ฌ์ฉ๋์ง ์๋ ๋ฉ๋ชจ๋ฆฌ ์ ๊ฑฐ(Sweep)
- Minor GC
โ Heap ์์ญ ์ Young ์์ญ์์ ํ๋ํ๋ ๊ฐ๋น์ง ์ปฌ๋ ํฐ
- Major GC
โ Heap ์์ญ ์ Old ์์ญ์์ ํ๋ํ๋ ๊ฐ๋น์ง ์ปฌ๋ ํฐ
๐ ๋๋์
๊ทธ๋๋ ์ค๋ ํ์ต์ ์ด์ ํ๋ stream ๋ณด๋ค ๊ด์ฐฎ์๋ค!! ์ด์ ๋๋ฌด ๋ฉ๋ถ์ด์์ด์,,
๊ทธ๋๋ ์ค๋ ์ค์ ์ ํ์ด๋ ๋ฌธ์ ํ์ด์ผํด์ ์ดํดํ๋ ค๊ณ ์ด์ฌํ ๊ณต๋ถํ๋๋ฐ ๊ทธ ๊ฒฐ๊ณผ๋ก Stream ๊ตฌ์กฐ๋ฅผ ์ดํดํ๊ณ ๋๋ ์ด๋ฒ ๋ฌธ์ ๋ค์ ๊ทธ๋๋ ์ ์ ํ๋ ธ๋ค ใ ใ
๋ฌธ์ ํ๋ ๋ ๋ค ์ค์ ์ ์ผ ์ฌ์ ๋ ๋ ๊ฐ๋ค!!
์ค๋์ ๊ธฐ๋ถ ์ข์ ๋ ! ์ฃผ๋ง์๋ ๋นก๊ณตํด์ผ์ง ใ ใ
( ๋ณธ ๊ฒ์๋ฌผ์ 2022/09/18์ ์์ฑํ ๊ธ์ ์ฎ๊ธด ๊ธ์ ๋๋ค. ์๋ฌธ์ ์๊ธฐ์ ์์! )
'โข CodeStates BootCamp > Section 1' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๐ [Section1] ์ด์ ๊ฐ๋ ํ๊ณ ๐ฅ (1) | 2023.04.06 |
---|---|
๐ [Section1] 17. Java ์ฌํ1 (0) | 2023.04.06 |
๐ [Section1] 16. ์ปฌ๋ ์ (Collection) (0) | 2023.04.06 |
๐ [Section1] 15. ์ด๊ฑฐํ, ์ ๋ค๋ฆญ, ์์ธ์ฒ๋ฆฌ (0) | 2023.04.06 |
๐ [Section1] 14. ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ4 (0) | 2023.04.06 |