์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- docker-compose kafka
- nGrinder
- ๋ค์ค ์ปจํ ์ด๋
- docker
- jvm ๋ฐ๋ฐ๋ฅ๊น์ง ํํค์น๊ธฐ
- aws saa ํฉ๊ฒฉ
- ํ๋ก๊ทธ๋๋จธ์ค
- redis ์กฐํ
- s3 ์ด๋ฏธ์ง ์ ์ฅ
- s3 ์ด๋ฏธ์ง ๋ค์ด๋ก๋
- ์๋ฐ
- Kafka
- docker compose
- docker ps -a
- redis ํ ์คํธ์ฝ๋
- ํ๋ก๊ทธ๋๋จธ์ค ์ปฌ๋ฌ๋ง๋ถ
- ์๋ฒ ํฐ์ง๋ ๋์ปค ์ฌ์คํ
- AWS Certified Solutions Architect - Associate
- s3 log ์ ์ฅ
- ํ์ดํผ๋ฐ์ด์
- Entity
- ์ ํจ์ค ์ค์ผ์ค๋ฌ
- prod docker-compose
- aws ์ฟ ํฐ
- Codedeploy ์ค๋ฅ
- JPA
- ์คํํ๋ ๋ฏธ์ค
- ํ๋ก๊ทธ๋๋จธ์ค ํฉ์นํ์์๊ธ
- ์ ํจ์ค ๋น๋ ์ค๋ฅ
- private subnet ec2 ๋ก์ปฌ ์ ์
- Today
- Total
๐๐ข๐๐ โ๐๐๐ ๐๐๐ก๐๐ ๐๐๐๐โง
[JAVA] JVM, JVM ๋ฉ๋ชจ๋ฆฌ, ๊ฐ์ฒด, ์ธ์คํด์ค, ์ค๋ฒ๋ผ์ด๋ฉ, ์ค๋ฒ๋ก๋ฉ, ์ถ์ํ ๋ณธ๋ฌธ
[JAVA] JVM, JVM ๋ฉ๋ชจ๋ฆฌ, ๊ฐ์ฒด, ์ธ์คํด์ค, ์ค๋ฒ๋ผ์ด๋ฉ, ์ค๋ฒ๋ก๋ฉ, ์ถ์ํ
๐คRyusun๐ค 2024. 5. 22. 23:23์๋ฐ ๊ฐ์ ๋จธ์ (Java Virtual Machine, JVM)์ ์๋ฐ ํ๋ก๊ทธ๋จ์ ์คํํ๋ ์ํํธ์จ์ด ํ๊ฒฝ์ด๋ค. ์๋ฐ ์ฝ๋๋ ๋ฐ๋ก ์คํ๋๋ ๊ฒ ์๋๋ผ ๋ฐ์ดํธ์ฝ๋(.class ํ์ผ)๋ก ๋ณํ๋๊ณ , ์ด ๋ฐ์ดํธ์ฝ๋๋ฅผ ์คํํ๋ ์ญํ ์ ํ๋ ๊ฒ JVM์ด๋ค.
JVM์ ์ฃผ์ ์ญํ
- ๋ฐ์ดํธ์ฝ๋ ์คํ: ์๋ฐ ์ปดํ์ผ๋ฌ๊ฐ ๋ณํํ ๋ฐ์ดํธ์ฝ๋๋ฅผ ํด์ํ๊ณ ์คํํ๋ค.
- ํ๋ซํผ ๋ ๋ฆฝ์ฑ ์ ๊ณต: ํ ๋ฒ ์ปดํ์ผ๋ ์๋ฐ ํ๋ก๊ทธ๋จ์ ์ด์ ์ฒด์ ์ ์๊ด์์ด ์คํ ๊ฐ๋ฅํ๋ค. ("Write Once, Run Anywhere")
- ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ: ๊ฐ๋น์ง ์ปฌ๋ ํฐ(GC)๋ฅผ ํตํด ๋ถํ์ํ ๊ฐ์ฒด๋ฅผ ์๋์ผ๋ก ์ ๋ฆฌํ๋ค.
- ๋ฐํ์ ํ๊ฒฝ ์ ๊ณต: ์คํ, ํ, ๋ฉ์๋ ์์ญ ๋ฑ์ ๊ด๋ฆฌํ๋ฉด์ ํ๋ก๊ทธ๋จ ์คํ์ ๋๋๋ค.
JVM ์คํ ๊ณผ์
- ์์ค ์ฝ๋(.java) ์์ฑ
- ์ปดํ์ผ(javac) → ๋ฐ์ดํธ์ฝ๋(.class) ์์ฑ
- JVM์ด ๋ฐ์ดํธ์ฝ๋ ์คํ(์ธํฐํ๋ฆฌํฐ + JIT ์ปดํ์ผ๋ฌ ์ฌ์ฉ
JVM์ ์ฃผ์ ๊ตฌ์ฑ ์์
- ํด๋์ค ๋ก๋(Class Loader): ๋ฐ์ดํธ์ฝ๋๋ฅผ JVM ๋ด๋ถ๋ก ๋ก๋
- ์คํ ์์ง(Execution Engine): ๋ฐ์ดํธ์ฝ๋๋ฅผ ์คํ (์ธํฐํ๋ฆฌํฐ + JIT ์ปดํ์ผ๋ฌ)
- ๋ฉ๋ชจ๋ฆฌ ์์ญ(Runtime Data Area): ํ(Heap), ์คํ(Stack), ๋ฉ์๋(Method) ์์ญ ๋ฑ
- ๊ฐ๋น์ง ์ปฌ๋ ํฐ(GC): ์ฌ์ฉํ์ง ์๋ ๋ฉ๋ชจ๋ฆฌ ์๋ ์ ๋ฆฌ
์ฆ, JVM ๋๋ถ์ ์๋ฐ ํ๋ก๊ทธ๋จ์ด ์ด์ ์ฒด์ ์ ๊ด๊ณ์์ด ์คํ๋ ์ ์๊ณ , ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๊ธฐ๋ฅ(GC) ๋๋ถ์ ๊ฐ๋ฐ์๊ฐ ์ง์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํด์ ํ์ง ์์๋ ๋๋ค.
JVM ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ํ๋ก๊ทธ๋จ ์คํ ์ค ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๊ด๋ฆฌํ๋ ๊ณต๊ฐ์ด๋ค. ํฌ๊ฒ ํ(Heap), ์คํ(Stack), ๋ฉ์๋(Method) ์์ญ์ผ๋ก ๋๋๋ฉฐ, ๊ฐ ์์ญ์ ์๋ก ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๊ด๋ฆฌํ๋ ์ญํ ์ ํ๋ค.
JVM ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ
- ๋ฉ์๋(Method) ์์ญ (๋๋ ํด๋์ค(Class) ์์ญ)
- ํด๋์ค ๋ฉํ๋ฐ์ดํฐ(ํด๋์ค ์ ๋ณด, ํ๋, ๋ฉ์๋, ์ธํฐํ์ด์ค ๋ฑ)๋ฅผ ์ ์ฅ
- ์์ ํ: ์์ ๋ฐ ๋ฆฌํฐ๋ด ์ ์ฅ
- ์ ์ (static) ๋ณ์ ๋ฐ ๋ฉ์๋ ์ฝ๋(๋ฐ์ดํธ์ฝ๋) ์ ์ฅ
- JVM์ด ์์๋ ๋ ํ ๋น๋๋ฉฐ, ํ๋ก๊ทธ๋จ ์ข ๋ฃ ์ ํด์ ๋จ
- ํ(Heap) ์์ญ
- ๊ฐ์ฒด, ๋ฐฐ์ด์ด ์ ์ฅ๋๋ ๊ณต๊ฐ
- GC(๊ฐ๋น์ง ์ปฌ๋ ํฐ)๊ฐ ๊ด๋ฆฌํ์ฌ ๋ ์ด์ ์ฌ์ฉ๋์ง ์๋ ๊ฐ์ฒด๋ฅผ ์ ๋ฆฌ
- ํฌ๊ธฐ๊ฐ ํฌ๊ณ ๋น๊ต์ ์๋๊ฐ ๋๋ฆผ
- ์์ญ ๊ตฌ๋ถ (JVM ๊ตฌํ์ ๋ฐ๋ผ ๋ค๋ฅผ ์ ์์)
- Young Generation (Eden, Survivor Space): ์๋กญ๊ฒ ์์ฑ๋ ๊ฐ์ฒด๊ฐ ์ ์ฅ๋จ
- Old Generation (Tenured Generation): ์ค๋๋ ๊ฐ์ฒด๊ฐ ์ ์ฅ๋จ
- Permanent Generation (JDK 8 ์ดํ Metaspace): ํด๋์ค ๋ฉํ๋ฐ์ดํฐ ์ ์ฅ
- ์คํ(Stack) ์์ญ
- ๋ฉ์๋ ํธ์ถ ์ ์์ฑ๋๋ ์ง์ญ ๋ณ์, ๋งค๊ฐ๋ณ์(Parameter), ์ฐ์ฐ ์ค๊ฐ๊ฐ์ ์ ์ฅ
- ๋ฉ์๋๊ฐ ํธ์ถ๋ ๋ ์คํ ํ๋ ์์ด ์์ฑ๋๊ณ , ๋ฉ์๋ ์ข ๋ฃ ์ ์ ๊ฑฐ๋จ (LIFO ๊ตฌ์กฐ)
- ๊ฐ ์ค๋ ๋๋ง๋ค ๋ณ๋์ ์คํ์ ๊ฐ์ง (์ค๋ ๋๋ณ ๋ ๋ฆฝ์ ์ธ ๊ณต๊ฐ)
- ๊ธฐ๋ณธ ์๋ฃํ(int, double ๋ฑ)๊ณผ ์ฐธ์กฐ ๋ณ์(reference)๊ฐ ์ ์ฅ๋จ (๊ฐ์ฒด ์์ฒด๋ ํ์ ์ ์ฅ)
public class MemoryExample {
static int staticVar = 100; // ๋ฉ์๋ ์์ญ์ ์ ์ฅ
public static void main(String[] args) { // ์คํ์ main() ํ๋ ์ ์์ฑ
int localVar = 10; // ์คํ ์์ญ์ ์ ์ฅ
MyClass obj = new MyClass(); // obj๋ ์คํ์, ๊ฐ์ฒด๋ ํ์ ์ ์ฅ
obj.display();
}
}
class MyClass {
int instanceVar = 20; // ํ ์์ญ์ ์ ์ฅ
}
- staticVar: ๋ฉ์๋ ์์ญ์ ์ ์ฅ
- localVar: main() ๋ฉ์๋์ ์คํ ํ๋ ์์ ์ ์ฅ
- obj: ์คํ์ ์ฐธ์กฐ ๋ณ์๋ก ์ ์ฅ, ์ค์ ๊ฐ์ฒด๋ ํ์ ์ ์ฅ
- instanceVar: ํ ์์ญ์ ๊ฐ์ฒด์ ํจ๊ป ์ ์ฅ
๋ฉ๋ชจ๋ฆฌ ์์ญ | ์ ์ฅ๋๋ ๋ฐ์ดํฐ | ํน์ง |
๋ฉ์๋ ์์ญ | ํด๋์ค ์ ๋ณด, static ๋ณ์, ์์, ๋ฉ์๋ ์ฝ๋ | JVM ์์ ์ ์์ฑ, ๊ณต์ ๋จ |
ํ ์์ญ | ๊ฐ์ฒด, ๋ฐฐ์ด | GC ๊ด๋ฆฌ, ์๋๊ฐ ์๋์ ์ผ๋ก ๋๋ฆผ |
์คํ ์์ญ | ์ง์ญ ๋ณ์, ๋งค๊ฐ๋ณ์, ๋ฉ์๋ ํธ์ถ ์ ๋ณด | ์ค๋ ๋๋ณ ํ ๋น, ๋ฉ์๋ ์ข ๋ฃ ์ ํด์ |
ํด๋์ค
ํด๋์ค(class)๋ ๊ฐ์ฒด(object)๋ฅผ ๋ง๋ค์ด ๋ด๊ธฐ ์ํ ํ์ด๋ฉฐ ๋ง๋ค์ด ๋ผ ๊ฐ์ฒด์ ์์ฑ๊ณผ ๋ฉ์๋์ ์งํฉ์ ๋ด์๋์ ๊ฒ
๊ฐ์ฒด
๊ฐ์ฒด๋ ํด๋์ค๋ก๋ถํฐ ๋ง๋ค์ด์ง๋ ์ค์ฒด, ํด๋์ค๋ก ์ ์ธ๋ ๋ณ์๋ฅผ ๊ฐ์ฒด๋ผ ํ๋ค.
์ธ์คํด์ค
์ธ์คํด์ค(instance)๋ ๊ฐ์ฒด๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ํ ๋น์ด ๋ ์ํ์ด๋ฉฐ ๋ฐํ์์ ๊ตฌ๋๋๋ ๊ฐ์ฒด๋ฅผ ๋งํฉ๋๋ค. ๊ฐ์ฒด์ ๊ฐ์ ์๋ฏธ๋ก ์ฐ์ด๊ธฐ๋ ํฉ๋๋ค.
static
static ํค์๋๋ ํด๋์ค์ ์ธ์คํด์ค๊ฐ ์๋ ํด๋์ค์ ์ํ๋ฉฐ ํด๋์ค์ ๋ณ์, ๋ฉ์๋ ๋ฑ์ ๊ณต์ ํ๋๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
- static ์ฅ์
- ํด๋์ค๋ก ๋ง๋ค์ด์ง๋ ๊ฐ์ฒด์ฌ์ด์์ ์ค๋ณต๋๋ ๋ฉ์๋, ์์ฑ์ ํจ์จ์ ์ผ๋ก ์ ์ํ ๋ ์ฐ์ด๋ฉฐ ๋จ์ํ ์ ์ญ๋ณ์๊ฐ ์๋๋ผ ํด๋์ค๋ด์ static ํค์๋๋ก ์ ์ธํ์ฌ ์ด ํด๋์ค์ ๊ฐ์ฒด๋ค๋ผ๋ฆฌ ์ฌ์ฉ๋๋ ๋ฉ์๋ ๋๋ ์์ฑ์ด๋ค. ๋ผ๋ ๊ฒ์ ๋ํ๋ด์ฃผ๋ ๋ช ์์ฑ์ด๋ผ๋ ์ฅ์ ์ด ์์ต๋๋ค.
- static ๋จ์
- static ํค์๋๋ก ์ ์ธ๋ ๋ณ์, ๋ธ๋ก, ๋ฉ์๋ ๋ฑ์ ์ ์ธ๊ณผ ๋์์ ๋ฏธ๋ฆฌ heap์์ญ์ด ์๋ Method area ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ํ ๋น์ด ๋๋ฉฐ ํ๋ก๊ทธ๋จ์ด ์ข ๋ฃ ๋ ๋๊น์ง GC์ ์ํด ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ์๋์ง ์๊ธฐ ๋๋ฌธ์ ๋ง์ฝ ํด๋์ค๊ฐ ๊ฐ์ฒด๋ก ์ฐ์ด์ง ์๋๋ค๋ฉด ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น๋ฅผ ๋ถ๋ฌ์ฌ ์ ์์ต๋๋ค.
์ค๋ฒ๋ก๋ฉ(Overloading)
์ค๋ฒ๋ก๋ฉ์ ์ด๋ฆ์ด ๊ฐ์๋ ๋งค๊ฐ๋ณ์ ๊ฐ์, ํ์ , ์์๋ฅผ ๋ค๋ฅด๊ฒ ํด์ ๊ฐ์ ์ด๋ฆ์ผ๋ก๋ ์ฌ๋ฌ ๊ฐ์ ํจ์๋ฅผ ์ ์ํ ์ ์๋ ๊ฒ์ ๋งํฉ๋๋ค. ์ด๋ ํ๋ก๊ทธ๋จ์ ์ ์ฐ์ฑ์ ๋์ด๊ณ ๊ฒฐ๊ณผ์ ์ผ๋ก ์ฝ๋๋ฅผ ๊น๋ํ๊ฒ ํ๋ ํจ๊ณผ๊ฐ ์์ผ๋ฉฐ ๊ฐ์ ํด๋์ค ๋ด์์ ์ฌ์ฉํฉ๋๋ค.
์ค๋ฒ๋ผ์ด๋ฉ(Overriding)
์์ ํด๋์ค๊ฐ ๊ฐ์ง๊ณ ์๋ ๋ฉ์๋๋ฅผ ํ์ ํด๋์ค๊ฐ ์ฌ์ ์๋ฅผ ํ๋ ๊ฒ์ ๋งํฉ๋๋ค. ์์ ๊ด๊ณ ํด๋์ค์์ ์ฌ์ฉ๋๋ฉฐ static, final ๋ก ์ ์ธํ ๋ฉ์๋๋ ์ค๋ฒ๋ผ์ด๋ฉ์ด ๋ถ๊ฐ๋ฅํฉ๋๋ค.
์ถ์ํ
ํ๋ก๊ทธ๋๋ฐ์์์ ์ถ์ํ๋ ๋ณต์กํ ๋ฐ์ดํฐ, ๊ตฌ์กฐ, ์์คํ
๋ฑ์ผ๋ก๋ถํฐ ํต์ฌ๋ง์ ๊ฐ๋ ค๋ด ๋ ์์ธํ๊ฒ ๋ง๋๋ ๊ฒ ๋๋ ์ธ๋ถ์ฌํญ, ์ ์ฐจ ๋ฑ์ ๊ฐ์ถ๊ณ ์ธํฐํ์ด์ค ๋ฑ์ ๋ง๋๋ ๊ฒ์ผ๋ก ๋ณต์ก๋๋ฅผ ๋ฎ์ถ๋ ๋ฐฉ๋ฒ์ ๋งํฉ๋๋ค.
์ถ์ํ๋ ๋ฐ์ดํฐ, ํ๋ก์ธ์ค ์ถ์ํ ํฌ๊ฒ 2๊ฐ์ง๋ก ๋๋ ์ง๋๋ค.
- ๋ฐ์ดํฐ ์ถ์ํ
- ์ด๋ ํ ๋ฐ์ดํฐ๋ค์ ๊ณตํต์ ์ ๋ชจ์ผ๊ณ ์ฐจ์ด์ ์ ๋ฒ๋ฆฝ๋๋ค. ์๋ฅผ ๋ค์ด ๊ณ ์์ด, ๊ฐ์์ง, ์์ญ์ด ๋ฑ์ ๊ฐ์ฒด๋ค์ ๊ณตํต์ ์ธ ํน์ง์ ๋ฌถ์ด ๋๋ฌผ์ด๋ผ๋ ์นดํ ๊ณ ๋ฆฌ๋ก ์นดํ ๊ณ ๋ฆฌํ ์ํต๋๋ค.
- ํ๋ก์ธ์ค ์ถ์ํ
- ์ด๋ ํ ๋ด๋ถ ํ๋ก์ธ์ค๋ฅผ ์จ๊ธฐ๋ ๊ฒ์ ๋งํฉ๋๋ค. ์๋ฅผ ๋ค์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ด๋ป๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋์ง๋ ๋ชจ๋ฅด์ง๋ง ๋จ์ํ๊ฒ insert, upsert ๋ฑ์ ์ฟผ๋ฆฌ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์์ต๋๋ค.
- ex) MySQL ์ํคํ
์ฒ
- ์ฝ๋๋ฟ๋ง ์๋๋ผ ์ค์ ์์คํ ์์๋ ์ถ์ํ๋ ์ด๋ค์ ธ์์ต๋๋ค. ๋ํ์ ์ธ ์๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ์ด ์์ต๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด์ ๋ด๋ถํ๋ก์ธ์ค์๋ ์๊ด์์ด “์ฟผ๋ฆฌ”๋ฅผ ํตํด ์ ๊ทผํ ์ ์์ต๋๋ค.
์ปดํ์ผ๋ฌ
- ์ ์ฒด ๋ณํ: ์์ค ์ฝ๋์ ์ ์ฒด๋ฅผ ์ฝ์ด ํ ๋ฒ์ ๊ธฐ๊ณ์ด๋ก ๋ณํํฉ๋๋ค. ๋ณํ๊ณผ์ ์๊ฑฐ์น ํ, ์์ฑ๋ ๊ธฐ๊ณ์ด ์ฝ๋๋ฅผ ์คํํฉ๋๋ค.
- ์๋: ์ปดํ์ผ ๊ณผ์ ์์ฒด๋ ์๊ฐ์ด ๊ฑธ๋ฆฌ์ง๋ง, ๋ณํ๋ ์ฝ๋๋ ์ง์ ์คํ๋๋ฏ๋ก ์คํ ์๊ฐ์ ๋น ๋ฆ ๋๋ค.
- ์ฌ์ฉ ์: C, C++, Go, Rust ๋ฑ์ ์ธ์ด๊ฐ ์ปดํ์ผ๋ฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- ์ฝ๋๋ฅผ ์์ ํ์ ๋ ์ปดํ์ผ๊ณผ์ ์ด ํ์ํฉ๋๋ค.
- ex) C++ ์ค์ต
์ปดํ์ผ๊ณผ์
๊ณ ์์ค์ ์์ค์ฝ๋๋ฅผ ์ ์ฒ๋ฆฌ, ์ปดํ์ผ๋ฌ, ์ด์ ๋ธ๋ฌ, ๋ง์ปค์ ๊ณผ์ ์ ๊ฑฐ์ณ ์ ์์ค์ธ์ด๋ก ๋ง๋ค๊ณ ์คํํ ์ ์๋ ํ๋ก๊ทธ๋จ์ ๋ง๋๋ ๊ณผ์
์ธํฐํ๋ฆฌํฐ
- ํ์ค์ฉ๋ณํ : ์์ค์ฝ๋๋ฅผ ํ์ค์ฉ ์ฝ์ด๊ฐ๋ฉฐ ๋ฐ๋ก ๊ธฐ๊ณ์ด๋ก ๋ณํํ๊ณ ์คํํฉ๋๋ค.
- ์๋: ์ปดํ์ผ ๋จ๊ณ๊ฐ ์์ผ๋ฏ๋ก ์ด๊ธฐ ์์์ ๋น ๋ฅด์ง๋ง, ์ ์ฒด ์ฝ๋ ์คํ ์๊ฐ์ ์ปดํ์ผ๋ฌ๋ฅผ ์ฌ์ฉํ ๋๋ณด๋ค ๋๋ฆด ์ ์์ต๋๋ค. ์ฝ๋๋ฅผ ์คํํ ๋๋ง๋ค ๋ณํ ๊ณผ์ ์ ๊ฑฐ์น๊ธฐ ๋๋ฌธ์ ๋๋ค.
- ์ฌ์ฉ ์: Python์ด ๋ํ์ ์ผ๋ก ์ธํฐํ๋ฆฌํฐ ๋ฐฉ์์ ์ฌ์ฉํฉ๋๋ค.
- ์ฝ๋๋ฅผ ์์ ํ์ ๋ ์ปดํ์ผ๊ณผ์ ์ด ํ์ํ์ง ์์ต๋๋ค.
- ex) Python ์ค์ต
![](https://blog.kakaocdn.net/dn/bCHVdv/btsHyln250s/2Rk5xfeby4KcowYyuvaJOk/img.png)
์ปดํ์ผ๋ฌ์ ์ธํฐํ๋ฆฌํฐ์ ๊ณตํต์
๋ชจ๋ ๊ณ ์์ค์ ์ธ์ด๋ฅผ ๊ธฐ๊ณ์ด๋ก ๋ณํํ๋ค๋ ๊ณตํต์ ์ด ์์ต๋๋ค.
[์ฐธ๊ณ ] ๊ธฐ๊ณ์ด
๊ธฐ๊ณ์ด ์ฝ๋(Machine Code)๋ ์ปดํจํฐ ํ๋ก์ธ์๊ฐ ์ง์ ์ดํดํ๊ณ ์คํํ ์ ์๋, ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ํํ์ ๋ช ๋ น์ด ์งํฉ์ ๋๋ค. ์ด๋ฌํ ์ฝ๋๋ 0๊ณผ 1, ์ฆ ์ด์ง์(binary)๋ก ํํ๋๋ฉฐ, ์ปดํจํฐ์ ์ค์ ์ฒ๋ฆฌ ์ฅ์น(CPU)๊ฐ ์ง์ ์คํํ ์ ์๋ ์ ์ผํ ์ธ์ด์ด์ ๊ฐ์ฅ ๋ฎ์ ์์ค์ ์ธ์ด์ด๋ฉฐ ์ด๋ ๊ธฐ๊ณ์ด๊ฐ ์ปดํจํฐ ํ๋์จ์ด์ ์ง์ ์ ์ผ๋ก ์ํตํ ์ ์๋ ์ธ์ด๋ฅผ ์๋ฏธํฉ๋๋ค.
์ปดํ์ผ๋ฌ์ ์ธํฐํ๋ฆฌํฐ์ ์ฐจ์ด์
๊ตฌ๋ถ | ์ปดํ์ผ๋ฌ | ์ธํฐํ๋ฆฌํฐ |
๋ฒ์ญ ๋ฐฉ์ | ์ ์ฒด ์ฝ๋ ๋ฒ์ญ ํ ์คํ | ํ ์ค์ฉ ๋ฒ์ญํ๋ฉด์ ์คํ |
์คํ ์๋ | ๋น ๋ฆ (๋ฏธ๋ฆฌ ๋ฒ์ญ) | ๋๋ฆผ (์คํํ ๋ ๋ฒ์ญ) |
์ค๋ฅ ๊ฒ์ถ | ์ ์ฒด ์ฝ๋ ํ์ธ ํ ์ค๋ฅ ์ถ๋ ฅ | ์คํ ๋์ค ์ค๋ฅ ๋ฐ์ ์ ์ฆ์ ์ค๋จ |
์์ ์ธ์ด | C, C++, Java | Python, JavaScript |
JIT ์ปดํ์ผ๋ฌ
JIT ์ปดํ์ผ๋ฌ๋ ์ธํฐํ๋ฆฌํฐ์ ์ปดํ์ผ๋ฌ์ ์ค๊ฐ ํํ๋ผ๊ณ ๋ณผ ์ ์์ต๋๋ค.
- ์ฝ๋ ๋ถ์: ์คํ ์์ ์ ํ๋ก๊ทธ๋จ ์ฝ๋๋ฅผ ๋ถ์ํ์ฌ, ์ด๋ค ๋ถ๋ถ์ด ๊ฐ์ฅ ์์ฃผ ์คํ๋๋์ง(hot spot) ํ๋จํฉ๋๋ค.(์ฆ, ์คํ์ ์ฝ๋๋ฅผ ๋ถ์ํ์ง ์์ต๋๋ค.)
- ๋์ ์ปดํ์ผ: ๋ถ์ ๊ฒฐ๊ณผ์ ๊ธฐ๋ฐํ์ฌ, ์์ฃผ ์คํ๋๋ ์ฝ๋(hot spot)๋ง์ ์ ๋ณ์ ์ผ๋ก ๊ธฐ๊ณ์ด๋ก ๋ณํํฉ๋๋ค. ์ด ๊ณผ์ ์ ํ๋ก๊ทธ๋จ ์คํ ์ค์ ์ค์๊ฐ์ผ๋ก ์ด๋ฃจ์ด์ง๋๋ค.
- ์ต์ ํ: ์ปดํ์ผ ๊ณผ์ ์์ ๋ค์ํ ์ต์ ํ ๊ธฐ๋ฒ์ ์ ์ฉํฉ๋๋ค. (ex. ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ํจํด์ ๋ถ์, ๊ฐ๋น์ง ์ปฌ๋ ์ ์ ์ค๋ฒํค๋ ์ต์ํ ๋ฑ)
- ์คํ: ์ปดํ์ผ๋ ๊ธฐ๊ณ์ด ์ฝ๋๋ฅผ ์คํํฉ๋๋ค. ํ๋ก๊ทธ๋จ์ด ๊ณ์ ์คํ๋๋ฉด์ ์๋ก์ด ํซ ์คํ์ด ๋ฐ๊ฒฌ๋๋ฉด, ํด๋น ๋ถ๋ถ๋ JIT ์ปดํ์ผ์ ํตํด ์ต์ ํ๋ฉ๋๋ค.
- ex) JVM(์๋ฐ๊ฐ์๋จธ์ ), .NET, V8(node.js ์์ง)
- ์ฅ์
- ์์ฃผ ์ฌ์ฉ๋๋ ์ฝ๋(hot code)์ ์คํ ์๋๊ฐ ํฌ๊ฒ ํฅ์๋ฉ๋๋ค.
- ๋จ์
- ์ปดํ์ผ ๋ ์ฝ๋๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํด ์บ์ฑํ๊ธฐ ๋๋ฌธ์ ์ธํฐํ๋ฆฌํฐ ๋ฐฉ์์ ๋นํด ๋ ๋ง์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๋นํ๋ค๋ ๋จ์ ์ด ์์ต๋๋ค.
[์ฐธ๊ณ ]
https://www.inflearn.com/course/๊ฐ๋ฐ์-๋ฉด์ -cs-ํน๊ฐ
CS ์ง์์ ์ ์ | ๋์์ธํจํด ๋คํธ์ํฌ ์ด์์ฒด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฃ๊ตฌ์กฐ | ํฐ๋ - ์ธํ๋ฐ
ํฐ๋ | ๊ตญ๋ด 1์ "๋ฉด์ ์ ์ํ CS ์ ๊ณต์ง์๋ ธํธ" ์ ์์ ๋์์ธํจํด, ๋คํธ์ํฌ, ์ด์์ฒด์ , ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฑ CS ์ง์ ๊ฐ์! CS ๋ฉด์ ์ ํ์ํ ๋ชจ๋ ๊ฐ๋ ๊ณผ ์ต์ ๊ธฐ์ถ์ ๋ค๋ฃฌ๋ค!, [์ฌ์ง] [์ฌ์ง] [์ค์ ์นด
www.inflearn.com
'๐ฃ๐ฟ๐ผ๐ด๐ฟ๐ฎ๐บ๐บ๐ถ๐ป๐ด๐ป > ๐๐๐ฏ๐' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[REVIEW] JVM ๋ฐ๋ฐ๋ฅ๊น์ง ํํค์น๊ธฐ - 2. ์๋ฐ ๋ฉ๋ชจ๋ฆฌ ์์ญ๊ณผ ๋ฉ๋ชจ๋ฆฌ ์ค๋ฒํ๋ก (0) | 2025.02.06 |
---|---|
[REVIEW] JVM ๋ฐ๋ฐ๋ฅ๊น์ง ํํค์น๊ธฐ - 1. ์๋ฐ ๊ธฐ์ ์์คํ (0) | 2025.02.01 |
[Java] ํ๋ก๊ทธ๋๋จธ์ค ์ปฌ๋ฌ๋ง๋ถ & ํ๋ก๊ทธ๋๋จธ์ค ํฉ์นํ์์๊ธ (0) | 2024.04.11 |
[Java] Action Tag (0) | 2022.10.28 |
[Java] JSP, Directive (0) | 2022.10.27 |