μΆμ²
ChatGPT
μ§μ λ³μλ μλ° νλ‘κ·Έλ¨μμ μ€ν(Stack) λ©λͺ¨λ¦¬μ μμμ΄ ν λΉλλ€. μ΄ μ€ν λ©λͺ¨λ¦¬λ₯Ό λ©μλ νΈμΆ μ μμ±λλ©°, λ©μλ μ€νμ΄ λλλ©΄ μλμΌλ‘ ν΄μ λλ€.
μ€ν λ©λͺ¨λ¦¬ Stack Memory
μ€ν λ©λͺ¨λ¦¬λ λ©μλ νΈμΆκ³Ό κ΄λ ¨λ μ 보λ₯Ό μ μ₯νλ λ©λͺ¨λ¦¬ μμμ΄λ€. μ¬κΈ°μλ λ€μκ³Ό κ°μ μ λ³΄κ° ν¬ν¨λλ€.
- λ©μλ νΈμΆ νλ μ : κ° λ©μλ νΈμΆμ λν μ 보λ₯Ό μ μ₯νλ νλ μμ΄ μ€νμ νΈμλλ€.
- μ§μ λ³μ : λ©μλ λ΄μμ μ μΈλ μ§μ λ³μλ μ€νμ ν΄λΉ νλ μμ μ μ₯λλ€.
- λ©μλ νλΌλ―Έν° : λ©μλμ 맀κ°λ³μλ μ€νμ μ μ₯λλ€.
- λ¦¬ν΄ μ£Όμ : λ©μλκ° μ’ λ£λ ν λμκ° νΈμΆ μ§μ μ΄ μ μ₯λλ€.
μ§μ λ³μμ μ΄κΈ°ν λ¬Έμ
μ§μ λ³μλ μ€ν λ©λͺ¨λ¦¬μ ν λΉλλ€. μ€νμ λ©λͺ¨λ¦¬ 곡κ°μ μμ£Ό λΉ λ₯΄κ² ν λΉνκ³ ν΄μ ν μ μμ§λ§, κ·Έ λμ μ΄κΈ°νλμ§ μμ μ§μ λ³μμ λν΄ μ°λ κΈ° κ°(garbage value)μ΄ λ¨μ μμ μ μλ€. μ΄λ μ€ν λ©λͺ¨λ¦¬κ° λ©λͺ¨λ¦¬ μμμ μ΄μ λ°μ΄ν°λ₯Ό μ μ₯ν μ μκΈ° λλ¬Έμ΄λ€.
μ°λ κΈ° κ°μ μμΈ
λ©λͺ¨λ¦¬ μ΄κΈ°ν μμ
μ€ν λ©λͺ¨λ¦¬λ₯Ό κ°μ²΄κ° μ¬μ©λκΈ° μ μλ μλμΌλ‘ μ΄κΈ°νλμ§ μλλ€. μ΄λ μ€νμ λΉ λ₯Έ μ±λ₯κ³Ό κ΄λ ¨μ΄ μμΌλ©°, λ©λͺ¨λ¦¬ ν λΉμ΄ λ§€μ° λΉ λ₯΄κ² μ΄λ€μ§λ€.
κΈ°μ‘΄ λ°μ΄ν°μ μ¬μ¬μ©
μ΄μ μ μ¬μ©λμλ λ°μ΄ν°κ° λ¨μ μμ μ μλ€. λ§μ½ μ§μ λ³μλ₯Ό λͺ μμ μΌλ‘ μ΄κΈ°ννμ§ μκ³ μ¬μ©νλ©°, κ·Έ λ³μμλ μ΄μ μ μ μ₯λμλ μμμ λ°μ΄ν°κ° λ¨μ μμ μ μλ€.
μμ
public class GarbageValueExample {
public static void main(String[] args) {
int uninitialized;
// λ€μ λΌμΈμ μ»΄νμΌ μ€λ₯ λ°μ: μ΄κΈ°νλμ§ μμ λ³μ μ¬μ© μλ
// System.out.println(uninitialized); // μλ¬: λ³μ uninitializedμ΄ μ΄κΈ°νλμ§ μμμ΅λλ€
}
}
μ μ½λμμ 'uninitialized'λΌλ λ³μλ μ΄κΈ°νλμ§ μμμΌλ©°, μ΄λ‘ μΈν΄ μ»΄νμΌ νμ μ€λ₯κ° λ°μνλ€. μλ°λ μ΄κΈ°νλμ§ μμ μ§μ λ³μλ₯Ό μ¬μ©ν μ μγ·λλ‘ νμ¬ μ μ¬μ μΈ λ²κ·Έλ₯Ό λ°©μ§νλ€.
μ μ΄κΈ°νκ° νμνκ°?
μλ°λ μμ μ±κ³Ό μμΈ‘ κ°λ₯μ±μ μ€μνκΈ° λλ¬Έμ, μ§μ λ³μλ₯Ό μ¬μ©νκΈ° μ μ λ°λμ μ΄κΈ°ννλλ‘ κ°μ νλ€. μ΄λ λ€μκ³Ό κ°μ μ΄μ λ‘ μ€μν μν μ νλ€.
μμ μ±
μ΄κΈ°νλμ§ μμ μνλ‘ μΈν΄ λ°μν μ μλ μκΈ°μΉ μμ λμμ΄λ μ€λ₯λ₯Ό λ°©μ§νλ€.
λͺ νμ±
μ΄κΈ°νλ μ½λμ μλλ₯Ό λͺ ννκ² λνλ΄ λ€λ₯Έ κ°λ°μλ€μ΄ μ½λλ₯Ό μ΄ν΄νλ λ° λμμ μ€λ€.
μμΈ‘ κ°λ₯μ±
μ΄κΈ°νλ λ³μλ μμλ κ°μ κ°μ§λ©°, νλ‘κ·Έλ¨μ μμΈ‘ κ°λ₯ν λμμ 보μ₯νλ€.
μ΄κΈ°νμ μ€μμ±
μ§μ λ³μλ₯Ό μ΄κΈ°ννλ κ²μ μ½λμ μμ μ±κ³Ό μμ μ±μ 보μ₯νλ μ€μν κ΄νμ΄λ€. λ€μμ μ§μμ λ³μλ₯Ό μ¬λ°λ₯΄κ² μ΄κΈ°ννλ λ°©λ²μ μμ΄λ€.
public class InitializationExample {
public static void main(String[] args) {
int initialized = 0; // λͺ
μμ μΌλ‘ μ΄κΈ°ν
System.out.println("Initialized value: " + initialized);
// λ€λ₯Έ λ³μ μ΄κΈ°ν
boolean flag = false;
double price = 10.99;
System.out.println("Flag: " + flag);
System.out.println("Price: " + price);
}
}
μ μμμμ λͺ¨λ μ§μ λ³μκ° λͺ μμ μΌλ‘ μ΄κΈ°νλμμΌλ©°, μ΄λ μ½λμ μλλ₯Ό λͺ ννκ² λνλ΄κ³ μμ μ±μ μ 곡νλ€.
μ€ν λ©λͺ¨λ¦¬μ νΉμ§κ³Ό μ΄κΈ°νμ κ΄κ³
μ€ν λ©λͺ¨λ¦¬λ λ€μκ³Ό κ°μ νΉμ§μ κ°μ§κ³ μμ΄, μ§μ λ³μκ° λ°λμ μ΄κΈ°νλμ΄μΌ νλ μ΄μ λ₯Ό μ€λͺ νλ€.
1. κ³ μ λ ν¬κΈ°
- μ€λͺ : μ€ν λ©λͺ¨λ¦¬λ κ° μ€λ λλ§λ€ κ³ μ λ ν¬κΈ°λ₯Ό κ°μ§λ©°, μ΄λ μ€ν μ€λ²νλ‘μ°(Stack Overflow)λ₯Ό λ°©μ§νκΈ° μν κ²μλ€. λ©λͺ¨λ¦¬ λΆμ‘± μ νλ‘κ·Έλ¨μ΄ μκΈ°μΉ μκ² μ’ λ£λ μ μλ€.
- μ΄κΈ°νμ νμμ±: μ§μ λ³μκ° μ΄κΈ°νλμ§ μμΌλ©΄, μ€νμ κΈ°μ‘΄ λ©λͺ¨λ¦¬ 곡κ°μ λ¨μ μλ μ΄μ μ λ°μ΄ν°λ₯Ό μ¬μ©ν κ°λ₯μ±μ΄ μμ΅λλ€. μ΄λ¬ν λ°μ΄ν°λ νλ‘κ·Έλ¨μ μ μ λμμ λ°©ν΄ν μ μλ€. μ΄κΈ°νλ λͺ μμ μΌλ‘ λ³μμ μμ μνλ₯Ό μ μνμ¬ μ΄λ¬ν μνμ μ€μΈλ€.
2. λΉ λ₯Έ μ κ·Ό μλ
- μ€λͺ : μ€ν λ©λͺ¨λ¦¬λ CPU μΊμμ κ°κΉμμ λ§€μ° λΉ λ₯΄κ² μ κ·Όν μ μλ€. μ΄λ λ©λͺ¨λ¦¬ ν λΉκ³Ό ν΄μ κ° λΉλ²ν κ²½μ° μ±λ₯μ ν° μ΄μ μ μ 곡νλ€.
- μ΄κΈ°νμ νμμ±: λΉ λ₯Έ μ κ·Ό μλλ ν¨μ¨μ μΈ μ€νμ 보μ₯νμ§λ§, μ΄κΈ°νλμ§ μμ λ³μκ° μ¬μ©λ λ μ€ν μ€λ₯κ° λΉ λ₯΄κ² λ°μν μ μλ€. μ΄κΈ°νλ₯Ό ν΅ν΄ νλ‘κ·Έλ¨μ μμΈ‘ κ°λ₯ν λμμ 보μ₯νλ€.
3. LIFO ꡬ쑰
- μ€λͺ : μ€νμ Last-In-First-Out(LIFO) ꡬ쑰λ‘, κ°μ₯ μ΅κ·Όμ μΆκ°λ λ°μ΄ν°κ° κ°μ₯ λ¨Όμ μ κ±°λλ€. λ©μλ νΈμΆ μ μλ‘μ΄ μ€ν νλ μμ΄ μΆκ°λκ³ , λ©μλ μ’ λ£ μ μ κ±°λλ€.
- μ΄κΈ°νμ νμμ±: μ§μ λ³μλ ν΄λΉ λ©μλμ μ€ν νλ μμ μ μ₯λλ©°, λ©μλκ° μ’ λ£λλ©΄ νλ μμ΄ μ κ±°λλ€. μ΄κΈ°νλμ§ μμ μνλ‘ λ³μλ₯Ό μ¬μ©ν κ²½μ°, λ€λ₯Έ λ©μλ νΈμΆμ λ°μ΄ν°κ° λ¨μ μμ μ μλ€. λͺ μμ μ΄κΈ°νλ μ΄λ¬ν μνμ λ°©μ§νμ¬ μμ μ μΈ μ€ν νλ¦μ 보μ₯νλ€.
ν΄λμ€μ μΈμ€ν΄μ€ λ³μμ ν΄λμ€ λ³μ
λ°λ©΄, ν΄λμ€μ μΈμ€ν΄μ€ λ³μμ ν΄λμ€ λ³μλ ν(Heap)κ³Ό λ©μλ(Method) μμμ μ μ₯λλ©°, μλ μ΄κΈ°νλλ€. μ΄λ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μ μμ μ±κ³Ό μμ μ±μ 보μ₯νκΈ° μν μλ°μ μ€κ³ μ² νμ΄λ€.
- μΈμ€ν΄μ€ λ³μ : κ°μ²΄ μμ± μ νμ μ μ₯λκ³ μλμΌλ‘ μ΄κΈ°νλλ€.
- ν΄λμ€ λ³μ : ν΄λμ€ λ‘λ© μ λ©μλ μμμ μ μ₯λκ³ μλμΌλ‘ μ΄κΈ°νλλ€.
κ²°λ‘
μ§μ λ³μκ° μ΄κΈ°νλμ§ μμΌλ©΄ μ°λ κΈ° κ°μ κ°μ§ μ μλ μ΄μ λ μ€ν λ©λͺ¨λ¦¬μ νΉμ±κ³Ό μ΄κΈ°νλμ§ μμ μνλ‘ λ³μλ₯Ό μ¬μ©νλ μνμ± λλ¬Έμ΄λ€. μλ°λ μμ μ±κ³Ό λͺ νμ±μ μν΄ μ§μ λ³μλ₯Ό μ¬μ©νκΈ° μ μ λ°λμ μ΄κΈ°ννλλ‘ μꡬνλ€. μ΄λ μ½λμ μμ μ±μ λμ΄κ³ , κ°λ°μκ° μ€μλ₯Ό μ€μ΄λ λ° ν° μν μ λ€.
'λΉ κ΅¬λ© μ±μ°κΈ°' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[μ©μ΄][Java] νλ‘κ·Έλ¨μ μμ μ±(Safety)κ³Ό μμ μ±(Reliability) (0) | 2024.08.06 |
---|---|
[Java] μ§μλ³μμ μ΄κΈ°νκ° νμμΈ μ΄μ (0) | 2024.08.06 |
[Java] λ¬Έμλ₯Ό μ μνμΌλ‘ ννν λ, '\u' λ€μ 16μ§μκ° λμμΌ νλ μ΄μ (0) | 2024.08.06 |
[μ©μ΄] κ΅μ ν(i18n)λ° μ§μν(l19n) (0) | 2024.08.06 |
[μ©μ΄][Java] λ¬Έμμ΄ λ¦¬ν°λ΄ String Literal (0) | 2024.08.05 |