Inflearn brand logo image

인프런 커뮤니티 질문&답변

문성민님의 프로필 이미지
문성민

작성한 질문수

JAVA 성능 튜닝과 트러블 슈팅

2-7. 최대 힙 메모리를 늘리면 좋은 점

질문1. [2-7 최대 힙 메모리를 늘리면 좋은 점 ] GC가 적게 일어나면 무조건 좋다?

작성

·

26

0

안녕하세요 강사님

좋은 강의 잘 듣고 있습니다.

[2-7 최대 힙 메모리를 늘리면 좋은 점 ] 최대 힙 메모리로 늘리면 좋은 점 - GC가 적게 일어나면 좋다?

에 대해서 궁금증이 있어 질문을 드립니다.

  1. GC가 일어나게 되면 STOP-THE-WORLD로 객체 제거 할떄 어플리케이션이 멈춘다고 알고 있습니다. 그래서 GC가 자주 일어나지 않으면 stop-the-world 가 덜 일어나니 좋겠네? 라는 생각을 처음에 했습니다.
    하지만 생각을 해보니 힙사이즈를 늘리면 gc가 일어나는 빈도가 적어지지만 한 번 gc가 일어날떄 객체 제거에 처리해야할 양이 늘어나 stop-the-world시 멈추는 시간이 늘어난다고 알고 있습니다...
    그래서 과연 무조건적으로 힙사이즈를 늘리는게 옳은게 맞을까 라는 궁금증이 생겨 질문 드립니다.

    감사합니다.

     

답변 2

0

휴먼넷님의 프로필 이미지
휴먼넷
지식공유자

안녕하세요!
네, 말씀하신대로 무작정 힙사이즈를 늘린다고 만능이 되는 건 아닙니다.
힙이 늘어날수록 GC는 드물게 발생하지만, 한 번 멈출 때 지연 시간이 발생할 수 있습니다.
제 생각엔 아래 2가지 답변을 드릴 수 있을 것 같아요.


1. 개발 소스내 메모리 증식 코드를 최대한 튜닝할 것.
- 짧은 시간내 메모리가 크게 늘어나는 코드는, 가능하면 메모리를 재활용해서 사용할 수 있는 방법으로
리팩토링하는 것을 의미합니다.

2. GC 사용 전략 및 튜닝을 잘 할 것.
- Parallel GC, G1 GC와 같은 GC마다 특징이 다르기 때문에, 프로그램 성격과 어떤 절차와 어느
정도의 속도로 메모리를 먹게 되는 지에 따라 GC 종류를 선택해서 사용하면 그나마 낫습니다.
예) G1 GC는 대규모 힙 사용 시, 힙을 연속된 큰 공간(Old Gen, Young Gen) 으로 보지 않고,
여러 단위로 분리해서 관리하기 때문에, stop-the-world도 쪼개진 부분에 대해서만 부분적으로
stop-the-world가 진행되므로 그나마 효과적으로 사용될 수 있습니다.


힙을 늘리면 좋다고 말씀드린 부분은, 어쩔 수 없이 프로그램내 온전한 기능을 수행하기 위해 메모리를 사용해야 할 경우, 확보할 수 있는 최대 메모리가 부족한 경우에 대한 튜닝 해결법이오니, 참고 부탁드립니다! 감사합니다

0

안녕하세요, 인프런 AI 인턴입니다. 문성민님.

자바 애플리케이션에서 최대 힙 메모리를 늘리는 것은 GC(Garbage Collection) 튜닝의 중요한 요소 중 하나입니다. 질문하신 “GC가 적게 일어나면 무조건 좋다”에 대한 답변은 상황에 따라 다를 수 있습니다.

  1. 힙 메모리 증가의 장점:

    • GC 발생 빈도 감소: 힙 메모리를 늘리면 객체를 더 많이 담을 수 있어서, GC가 덜 자주 발생하게 됩니다. 따라서 stop-the-world 이벤트의 빈도가 줄어들어 애플리케이션의 응답성이 개선될 수 있습니다.
  2. 힙 메모리 증가의 단점:

    • 처리 시간 증가: 힙 메모리 크기가 커지면, 한 번 GC가 발생할 때 처리해야 할 객체의 양이 많아져 stop-the-world 시간 자체가 길어질 수 있습니다. 특히, Full GC의 경우 더 큰 힙은 더 많은 시간을 요구할 수 있습니다.
    • 메모리 사용량 증가: 사용하지 않는 메모리가 많아져 시스템의 다른 프로세스에게 할당할 수 있는 자원이 줄어들 수 있습니다.

따라서 힙 메모리 크기는 애플리케이션의 특성과 사용 환경에 맞춰 적절하게 설정하는 것이 중요합니다. 성능의 최적화를 위해 데이터 수집 및 모니터링을 통해 최적의 힙 크기를 결정하는 것이 좋습니다.

관련하여 유사한 질문과 답변을 참조하시기 바랍니다:
- 힙 메모리 설정 관련 유사 질문 사례

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

문성민님의 프로필 이미지
문성민

작성한 질문수

질문하기