반응형

DummyData

@ToString
@Getter
@AllArgsConstructor
public class DummyData {
    private int number;
    private String name;
}

OomController

@Slf4j
@RestController
public class OomController {
    @GetMapping("/api/oom")
    public String oom() {
        List list = new ArrayList<>();

        while (list.size() < Integer.MAX_VALUE) {
            DummyData dummyData = new DummyData(list.size(), "test" + list.size());
            log.info("dummyData : {}", dummyData);
            list.add(dummyData);
        }

        return "oom!!";
    }
}

실행

  • 서버에 올린 후 실행
  • /api/oom 경로로 접속해 과도한 메모리 사용을 유발

Heap Dump

APP_PID=`jps | grep example.jar | awk '{print $1}'` \
&& jmap -dump:live,format=b,file=heap-dump.bin $APP_PID

Eclipse Memory Analyzer 설치

Eclipse Memoery Analyzer로 분석

  • File > Open Heap Dump > heap-dump.bin 파일 선택
  • Dominator Tree 클릭

  • 메모리 점유율이 많은 객체 위주로 확인

 

참고

반응형

'Development > Java' 카테고리의 다른 글

[Java] Regular Expression  (0) 2020.12.28
[Java] Thread Dump  (0) 2020.12.28
[Java] 명령어  (0) 2020.12.28
[Java] Selenium  (0) 2020.12.28
[Java] Apache HttpClient  (0) 2020.12.28

+ Recent posts