gmlwnsdl77
70
2019-10-09 17:15:11
2
156

Heap 메모리 부족으로 full gc 발생시의 코드튜닝


안녕하세요

Api를 운영하고 있는데 얼마전에 사용자 유입이 많아서 heap 메모리가 차서 full gc 가 발생했었습니다.


그래서 소스 튜닝을 하려 합니다.  heap메모리를 줄이려면 new연산자로 접근 하는 변수를 줄이자는 방법으로 접근하고 있습니다.


스프링을 이용하고 있기 때문에 대부분 싱글톤이지만 중간 중간 new 연산자로 코딩한 부분이 있더군요.

그런데 제가 궁금한건 new연산자로 만들어도 일단 해당 메소드가 종료되면 gc대상이 되어 old 영역으로 이동하지 않고 바로 minus gc 가 발생할꺼라 생각이 들어서 과연 이 부분을 수정한다고 full gc를 해결할 수 있을까 하는 의문이 듭니다.


Static으로 선언되어 있는 util class들도 있고 (공통이기 때문에 빈번하게 호출됩니다) 


보통 이런 상황에 어떤식으로 소스 튜닝을 하시나요?

일단은 "new 연산자를 줄이자"밖에 떠오르지 않는데 다른 분들은 어떻게 작업하시는지 궁금합니다


감사합니다

0
0
  • 답변 2

  • zepinos
    18k
    2019-10-09 17:26:09
    촤소한 메모리가 가득차서 죽을 때 덤프 파일이라도 생성되게 해서 어떤 객체가 많이 차 있는지 봐야겠죠. 그래야 정상적인데 메모리 옵션을 너무 적게 준건지 누수가 있는지 파악이 되죠.
    0
  • 뒷집할머니
    1k
    2019-10-10 09:51:52

    full gc는 언젠가는 발생합니다.


    저 같은 경우는 횟수를 줄이기 위해 캐싱 오브젝트를 자주 쓰는 편인데,

    이건 뭐 다들 하실거고...

    그 외에는 복불복일 듯
    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.