Java

μžλ°”μ˜ λ©”λͺ¨λ¦¬(Memory) μ˜μ—­ κ°œλ…

567Rabbit 2024. 5. 31. 15:21

 

 

 

1. λ©”μ†Œλ“œ μ˜μ—­(Method Area) (= 데이터 μ˜μ—­) 

 

- λ©”μ†Œλ“œ μ˜μ—­μ€ 클래슀 정보(클래슀 이름, λ©”μ†Œλ“œ, λ³€μˆ˜)와 같은 λŸ°νƒ€μž„ μƒμˆ˜ 풀을 ν¬ν•¨ν•˜κ³  μžˆλŠ” λ©”λͺ¨λ¦¬ μ˜μ—­μ΄λ‹€.

- Static μ˜μ—­μ΄λΌκ³ λ„ ν•˜λ©° μ „μ—­λ³€μˆ˜μ™€ 정적 λ©€λ²„λ³€μˆ˜κ°€ μ €μž₯λ˜λŠ” μ˜μ—­μ΄λ‹€.

- Static μ˜μ—­μ€ 일반적으둜 ν”„λ‘œκ·Έλž¨μ΄ λ‘œλ“œλ  λ•Œ λ©”λͺ¨λ¦¬μ— ν• λ‹Ήλ˜λ©°, ν”„λ‘œκ·Έλž¨μ΄ μ‹€ν–‰λ˜λŠ” λ™μ•ˆ κ·Έ 크기와 μœ„μΉ˜κ°€ λ³€κ²½λ˜μ§€ μ•ŠμŒ

- μ΄λŠ” ν”„λ‘œκ·Έλž¨μ˜ μ‹€ν–‰ 쀑에 κ³ μ •λœ 데이터가 항상 λ™μΌν•œ μœ„μΉ˜μ— μ €μž₯λ˜μ–΄μ•Ό ν•˜κΈ° λ•Œλ¬Έμ— μ€‘μš”ν•œ κ°œλ…

 

 

* * Static μ˜μ—­μ—λŠ” 주둜 λ‹€μŒκ³Ό 같은 데이터가 ν¬ν•¨λœλ‹€ **

  • 멀버 λ³€μˆ˜ = μ „μ—­ λ³€μˆ˜ (Global Variables) : ν•¨μˆ˜ λ°–μ—μ„œ μ„ μ–Έλœ λ³€μˆ˜λ‘œ, ν”„λ‘œκ·Έλž¨ μ „μ²΄μ—μ„œ μ ‘κ·Ό κ°€λŠ₯ν•˜λ‹€. μ΄λŸ¬ν•œ λ³€μˆ˜λ“€μ€ ν”„λ‘œκ·Έλž¨μ΄ μ‹œμž‘λ  λ•Œ λ©”λͺ¨λ¦¬μ— ν• λ‹Ήλ˜κ³  ν”„λ‘œκ·Έλž¨μ΄ μ’…λ£Œλ  λ•ŒκΉŒμ§€ μ‘΄μž¬ν•œλ‹€.
  • 지역 λ³€μˆ˜ = 정적 λ³€μˆ˜ (Static Variables) : ν•¨μˆ˜ λ‚΄ λ˜λŠ” ν•¨μˆ˜ λ°–μ—μ„œ static ν‚€μ›Œλ“œλ‘œ μ„ μ–Έλœ λ³€μˆ˜λ‘œ, μ„ μ–Έλœ 블둝 λ‚΄μ—μ„œλ§Œ μ ‘κ·Ό κ°€λŠ₯ν•˜μ§€λ§Œ, ν”„λ‘œκ·Έλž¨μ˜ μ‹€ν–‰ κΈ°κ°„ λ™μ•ˆ λ©”λͺ¨λ¦¬μ— μœ μ§€λœλ‹€. ν•¨μˆ˜ λ‚΄μ—μ„œ μ„ μ–Έλœ 정적 λ³€μˆ˜λŠ” ν•¨μˆ˜κ°€ μ—¬λŸ¬ 번 ν˜ΈμΆœλ˜λ”λΌλ„ κ·Έ 값을 μœ μ§€ν•œλ‹€.
  • μƒμˆ˜ 데이터 (Constant Data) : ν”„λ‘œκ·Έλž¨ λ‚΄μ—μ„œ λ³€ν•˜μ§€ μ•ŠλŠ” 데이터이닀. 예λ₯Ό λ“€μ–΄, λ¬Έμžμ—΄ λ¦¬ν„°λŸ΄κ³Ό 같은 μƒμˆ˜ 값듀이 μžˆλ‹€.

 

 

 

2. μŠ€νƒ(Stack)

 

μŠ€νƒμ€ λ©”μ†Œλ“œ 호좜과 κ΄€λ ¨λœ 정보(지역 λ³€μˆ˜, 맀개 λ³€μˆ˜, μž„μ‹œ 데이터 λ“±)λ₯Ό μ €μž₯ν•˜λŠ” λ©”λͺ¨λ¦¬ μ˜μ—­μ΄λ‹€.

μž‘μ—…μ˜μ—­μ΄λΌκ³ λ„ ν•œλ‹€.

- ν”„λ ˆμž„: 각 λ©”μ†Œλ“œ ν˜ΈμΆœλ§ˆλ‹€ ν•˜λ‚˜μ˜ ν”„λ ˆμž„μ΄ μƒμ„±λœλ‹€.

- 지역 λ³€μˆ˜: λ©”μ†Œλ“œ λ‚΄λΆ€μ—μ„œ μ„ μ–Έλœ λ³€μˆ˜.

- 호좜 μŠ€νƒ: ν˜„μž¬ λ©”μ†Œλ“œκ°€ 호좜된 μˆœμ„œλŒ€λ‘œ μŒ“μΈλ‹€

- νŠΉμ§•: 각 μŠ€λ ˆλ“œλ§ˆλ‹€ λ…λ¦½λœ μŠ€νƒμ„ 가진닀. λ©”μ†Œλ“œ 호좜이 λλ‚˜λ©΄ μŠ€νƒ ν”„λ ˆμž„μ€ μžλ™μœΌλ‘œ μ œκ±°λœλ‹€

 

 

 

 

3. νž™(Heap)

 

νž™μ€ λ™μ μœΌλ‘œ μƒμ„±λœ 객체와 배열을 μ €μž₯ν•˜λŠ” λ©”λͺ¨λ¦¬ μ˜μ—­μ΄λ‹€.

- 객체: new ν‚€μ›Œλ“œλ₯Ό 톡해 μƒμ„±λœ μΈμŠ€ν„΄μŠ€.

- λ°°μ—΄: λ™μ μœΌλ‘œ ν• λ‹Ήλœ λ°°μ—΄.

- νŠΉμ§•: λͺ¨λ“  μŠ€λ ˆλ“œκ°€ κ³΅μœ ν•˜λ©°, μžλ°”λŠ” 가비지 μ»¬λ ‰μ…˜μ„ 톡해 μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” 객체λ₯Ό μžλ™μœΌλ‘œ μ •λ¦¬ν•œλ‹€

  •  

 

μžλ°”μ˜ λ©”λͺ¨λ¦¬ κ΅¬μ‘°λŠ” 이처럼 λ‹€μ–‘ν•œ μ˜μ—­μ„ 톡해 효율적이고 μ•ˆμ „ν•œ λ©”λͺ¨λ¦¬ 관리λ₯Ό κ°€λŠ₯ν•˜κ²Œ ν•œλ‹€.