[Java] OutOfMemory ์žก๊ธฐ

2025. 1. 28. 01:28ยทJVM/Java

๐ŸŽฏ Goals

  • OutOfMemory ๋ฐœ์ƒ ์›์ธ ํŒŒ์•… ํ•˜๋Š” ๋ฒ•์„ ์•ˆ๋‹ค.

 

์˜ˆ์ œ ์ฝ”๋“œ

JVM option ์— ๋‹ค์Œ ์„ค์ •์„ ์ถ”๊ฐ€ํ•œ๋‹ค.

Intellij IDEA > Rum Configuration > Modify > Add VM Options

-Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError
-Xms20m ํž™ ์ตœ์†Œ ํฌ๊ธฐ 20MB
-Xmx20m ํž™ ์ตœ๋Œ€ ํฌ๊ธฐ 20MB ์ œํ•œ
-XX:HeapDumpOnOutOfMemory OOM ๋ฐœ์ƒ์‹œ HeapDump ํŒŒ์ผ์„ ์ƒ์„ฑ

Intellij IDEA ๋ผ๋ฉด ์ด๋ ‡๊ฒŒ ์„ค์ •ํ•œ๋‹ค.

public class HeapOOM {
  static class OOMObject {}
  public static void main(String[] args) {
    List<OOMObject> list = new ArrayList<>();
    while (true) {
      list.add(new OOMObject());
    }
  }
}

 

ํž™ ํฌ๊ธฐ๊ฐ€ 20MB ๋ฅผ ๋„˜์–ด์„œ๋Š” ์ˆœ๊ฐ„ OOM ์ด ๋ฐœ์ƒํ•œ๋‹ค.

 

 

 

HeapDump file

Profiling

OOM ๋ฐœ์ƒ์œผ๋กœ ์ธํ•œ .hprof ํŒŒ์ผ์„ ์—ด์–ด๋ณธ๋‹ค.

๋‹น์—ฐํžˆ Intellij IDEA ์—์„œ ์—ฐ๋‹ค. (์•„์ง๋„ eclipse ์“ฐ๋Š” ์‚ฌ๋žŒ์ด ์žˆ์„๊นŒ???)

 

HeapOOM$OOMObject 

  • Count 810,326 ๊ฐœ
    OOMObject ์ƒ์„ฑ ๊ฐœ์ˆ˜
  • Shallow 12.97 MB
    OOMObject ๊ฐ์ฒด ์ด๋Ÿ‰
    810,326 * 16 bytes
  • Retained 12.97 MB
    Garbage Collector ๋™์ž‘์‹œ ํšŒ์ˆ˜๋  ๋ฉ”๋ชจ๋ฆฌ ์ด๋Ÿ‰ 

 

Shallow , Retained ?

Shallow (Size)

์ˆœ์ˆ˜ ๊ฐ์ฒด๊ฐ€ ์ฐจ์ง€ํ•˜๋Š” Heap ์‚ฌ์ด์ฆˆ

์œ„ ์˜ˆ์ œ์—์„  OOMObject ๊ฐ์ฒด 810,326 ๊ฐœ๊ฐ€ 12.97MB Shallow ๋กœ ๊ฐ€์ง„๋‹ค.

Shallow size 3.31MB, Retained 16.32MB

Shallow size:  Array header size+(Number of elements×Reference size)

-> 3.24 MB  = 16 (header) + 810,325 (elements) * 4 (Reference size)

Retained (Size)

Garbage Collector ๊ฐ€ ์ž‘๋™ํ•œ๋‹ค๋ฉด ์‚ฌ๋ผ์งˆ ๊ฐ์ฒด ๋ฉ”๋ชจ๋ฆฌ ์ด๋Ÿ‰ ์ดํ•ฉ.

 

C ์˜ Retained Size ๋Š” C,D,E,F,G,H ๊ฐ์ฒด์˜ ์ดํ•ฉ์ด๋‹ค.

Shallow size 3.31MB, Retained 16.32MB

list ๊ฐ์ฒด๊ฐ€ ์ง€์›Œ์ง€๋ฉด 3.31MB (Reference ๊ฐ์ฒด๋“ค) + OOMObject 12.97 MB ์ดํ•ฉํ•œ ์•ฝ 16.32MB ๊ฐ€ Garbage Collector ์— ์˜ํ•ด ์ œ๊ฑฐ๋  ์ˆ˜ ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ๋‹ค.

 

๊ฒฐ๊ตญ 2๊ฐ€์ง€๋ฅผ ์ฒดํฌํ•ด์•ผ ํ•˜๋Š”๋ฐ

  1. Memory Leak ์ด ์žˆ๋Š”๊ฐ€?
    ํ•„์š” ์—†๋Š” ๊ฐœ์ฒด๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ ์œ ํ•˜๊ณ  ์žˆ๋Š”๊ฐ€?
  2. ์ฝ”๋“œ ์ˆ˜๋ช…์ฃผ๊ธฐ๊ฐ€ ๊ธธ์–ด์„œ ์‚ด์•„๋‚จ์€ ๊ฐ์ฒด๋Š” ์—†๋Š”๊ฐ€?

 

 

๐Ÿ”— References

 

Help - Eclipse Platform

 

help.eclipse.org

 

์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'JVM > Java' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Java] ์ œ๋„ค๋ฆญ๊ณผ ๋™์  ํƒ€์ž… ์บ์ŠคํŒ…  (0) 2025.10.16
[Java] ๋žŒ๋‹ค ์บก์ณ์™€ Synthetic ๋žŒ๋‹ค ํด๋ž˜์Šค  (0) 2025.02.19
[Java] ์˜ˆ์™ธ ๋ฒˆ์—ญ๊ณผ ์˜ˆ์™ธ ์—ฐ์‡„ ๊ธฐ๋ฒ•  (0) 2024.09.30
[Java] Thread ์ƒ์† ๋Œ€์‹  Runnable ์„ ์‚ฌ์šฉํ•˜๋ผ.  (0) 2024.07.21
[Java] Guava - MultiMap , BiMap  (0) 2024.07.14
'JVM/Java' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [Java] ์ œ๋„ค๋ฆญ๊ณผ ๋™์  ํƒ€์ž… ์บ์ŠคํŒ…
  • [Java] ๋žŒ๋‹ค ์บก์ณ์™€ Synthetic ๋žŒ๋‹ค ํด๋ž˜์Šค
  • [Java] ์˜ˆ์™ธ ๋ฒˆ์—ญ๊ณผ ์˜ˆ์™ธ ์—ฐ์‡„ ๊ธฐ๋ฒ•
  • [Java] Thread ์ƒ์† ๋Œ€์‹  Runnable ์„ ์‚ฌ์šฉํ•˜๋ผ.
M_Falcon
M_Falcon
  • M_Falcon
    Falcon
    M_Falcon
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (432)
      • Web (16)
        • Nodejs (14)
        • Javascript (23)
        • FrontEnd (4)
      • DataBase (39)
        • Fundamental (1)
        • Redis (4)
        • PostgreSQL (10)
        • NoSQL (4)
        • MySQL (9)
        • MSSQL (3)
        • Error (4)
      • Algorithm (79)
        • Algorithm (๋ฌธ์ œํ’€์ด) (56)
        • Algorithm (์ด๋ก ) (23)
      • JVM (65)
        • Spring (13)
        • JPA (5)
        • Kotlin (13)
        • Java (24)
        • Error (7)
      • ๊ธฐํƒ€ (70)
        • Kafka (3)
        • Kubernetes (3)
        • Docker (13)
        • git (19)
        • ์žก๋™์‚ฌ๋‹ˆ (27)
      • ์žฌํ…Œํฌ (11)
        • ์„ธ๋ฌด (4)
        • ํˆฌ์ž (3)
        • ๋ณดํ—˜ (0)
      • BlockChain (2)
        • BitCoin (0)
      • C (32)
        • C (10)
        • C++ (17)
        • Error (3)
      • Low Level (8)
        • OS (3)
        • ์‹œ์Šคํ…œ ๋ณด์•ˆ (5)
      • ๋„คํŠธ์›Œํฌ (3)
      • LINUX (30)
        • Linux (26)
        • Error (4)
      • ์ €์ž‘๊ถŒ๊ณผ ์Šค๋งˆํŠธํฐ์˜ ์ดํ•ด (0)
      • ์ƒ๊ฐ ๋ญ‰์น˜ (6)
      • ๊ถ๊ธˆ์ฆ (2)
      • Private (4)
        • ์ด์ง ๊ฒฝํ—˜ (0)
        • ๊ฟˆ์„ ์ฐพ์•„์„œ (1)
      • Android (21)
        • OS (4)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • WEB
    • ์•Œ๊ณ ๋ฆฌ์ฆ˜
    • DataBase
    • Linux
    • Mobile
    • C
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

    • github
  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    JPA
    C++
    android
    database
    linux
    Programmers
    PostgreSQL
    algorithm
    ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
    Spring
    javascript
    kafka
    Git
    java
    Kotlin
    Bitcoin
    ubuntu
    ๋ฐฑ์ค€
    ์•Œ๊ณ ๋ฆฌ์ฆ˜
    docker
  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
M_Falcon
[Java] OutOfMemory ์žก๊ธฐ
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”