1. JVM κ°λ π¨π§
JVM(Java Virtual Machine)μ΄λ 'μλ°λ₯Ό μ€ννκΈ° μν κ°μμ μ»΄ν¨ν°'λΌκ³ ν μ μλ€. μ¬κΈ°μ λ§νλ κ°μμ μ»΄ν¨ν°λ μ€μ μ»΄ν¨ν°(νλμ¨μ΄)κ° μλ μννΈμ¨μ΄λ‘ ꡬνλ μ»΄ν¨ν° μμ μ»΄ν¨ν°μ΄λ€.
μλ°λ‘ μμ±λ μ ν리μΌμ΄μ μ λͺ¨λ JVMμμλ§ μ€νλκΈ° λλ¬Έμ μλ° μ ν리μΌμ΄μ μ μ€ννκΈ° μν΄μλ JVMμ΄ λ°λμ νμνλ€.
JVMμ OSμ μ’ μμ μ΄κΈ° λλ¬Έμ ν΄λΉ OSμμ μ€ν κ°λ₯ν JVMμ΄ νμνλ€. μ΄λ¬ν νΉμ±μΌλ‘ μΈν΄ μλ°μ μ₯μ μ€ νλλ‘ 'Write Once, Run AnyWhere.(ν λ² μμ±νλ©΄ μ΄λμλ μ€νλλ€.)'λΌλ κ²μ΄ μλ€.
2. 3κ°μ§ μ£Όμ μμ π©π¬
JVMμ λ©λͺ¨λ¦¬λ₯Ό μ©λμ λ°λΌ μ¬λ¬ μμμΌλ‘ λλμ΄ κ΄λ¦¬νλ€. κ·Έ μ€ 3κ°μ§ μ£Όμ μμμΈ λ©μλ μμ(Method Area), μ€ν μμ(Call Stack), ν μμ(Heap)μ λν΄μ μμ보μ. (μλ κ·Έλ¦Όμμ cvλ ν΄λμ€ λ³μ, lvλ μ§μλ³μ, ivλ μΈμ€ν΄μ€ λ³μλ₯Ό μλ―Ένλ€.)
1. λ©μλ μμ (Method Area)
- νλ‘κ·Έλ¨ μ€ν μ€ μ΄λ€ ν΄λμ€κ° μ¬μ©λλ©΄ λ©μλ μμμ ν΄λμ€μ λν μ 보λ₯Ό μ μ₯
- μ΄λ, κ·Έ ν΄λμ€μ ν΄λμ€ λ³μ(class variable)λ μ΄ μμμ ν¨κ» μ μ₯
2. μ€ν μμ (Call Stack)
- λ©μλλ€μ μ€ν 곡κ°
- λ©μλκ° μμ μ μννλ λμ μ§μλ³μ(맀κ°λ³μ ν¬ν¨)λ€κ³Ό μ°μ°μ μ€κ°κ²°κ³Ό λ±μ μ μ₯
- λ©μλ νΈμΆ μμλλ‘ μμ΄λ ꡬ쑰
3. ν μμ (Heap)
- μΈμ€ν΄μ€κ° μμ±λλ 곡κ°
- νλ‘κ·Έλ¨ μ€ν μ€ μμ±λλ μΈμ€ν΄μ€λ λͺ¨λ μ΄κ³³μ μμ±
3. μμ π¨π¨
2κ°μ μμλ₯Ό μ΄ν΄λ³΄μ. 첫 λ²μ§Έ μμλ₯Ό ν΅ν΄ 'νλ‘κ·Έλ¨ μ€ν μ€ μ€ν μμ(Call Stack)μ λ³ν'λ₯Ό μμλ³΄κ³ , λ λ²μ§Έ μμλ₯Ό ν΅ν΄ 'κ°μ²΄μ μμ±κ³Ό λ©λͺ¨λ¦¬ν λΉ'μ μμ보μ. μ½λμ κ·Έλ¦Όμ ν΅ν΄ μ½κ² μ΄ν΄ν μ μκΈ° λλ¬Έμ μμΈν μ€λͺ μ μλ΅νλ€.
1. μ€ν μμμ λ³ν
class CallStackTest {
public static void main(String[] args) {
firstMethod();
}
static void firstMethod() {
secondMethod();
}
static void secondMethod() {
System.out.println("This is the secondMethod");
}
}
2. κ°μ²΄μ μμ±κ³Ό λ©λͺ¨λ¦¬ ν λΉ
public class Animal {
String name;
int age;
boolean isMammalia;
public Animal(String name, int age, boolean isMammalia) {
super();
this.name = name;
this.age = age;
this.isMammalia = isMammalia;
}
}
public class JvmMemoryTest {
public static void main(String[] args) {
Animal animalA = new Animal("amenable", 24, true);
Animal animalB = new Animal("sunny", 21, false);
}
}
ν΄λΉ κΈμ λ¨κΆμ± λμ μλ°μ μ μμ μ°Έκ³ νμμ΅λλ€.
'π JAVA > μ£Όμ κ°λ ' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
clone() (0) | 2023.04.07 |
---|---|
μμ 볡μ¬(Shallow Copy) vs κΉμ 볡μ¬(Deep Copy) (0) | 2023.04.07 |
λ³μ (0) | 2023.03.21 |
κ³΅λ³ λ°ννμ (Convariant Return Type) (0) | 2023.03.09 |
λ§μ»€ μΈν°νμ΄μ€ (Marker Interface) (0) | 2023.03.09 |