CodeGym /Java Course /모듈 3 /Java에서 가비지 수집기 선택

Java에서 가비지 수집기 선택

모듈 3
레벨 18 , 레슨 6
사용 가능

7.1* 올바른 가비지 수집기를 선택하는 방법

애플리케이션에 엄격한 대기 시간 요구 사항이 없는 경우 애플리케이션을 실행하고 JVM 자체에서 올바른 수집기를 선택하도록 해야 합니다.

대부분의 경우 기본 설정이 제대로 작동합니다. 필요한 경우 힙 크기를 조정하여 성능을 향상시킬 수 있습니다. 여전히 성능이 기대에 미치지 못하는 경우 애플리케이션의 요구 사항에 맞게 수집기를 수정해 보십시오.

  • 순차적 . 애플리케이션에 작은 데이터 세트(최대 약 100MB)가 있거나 대기 시간 요구 사항 없이 단일 프로세서에서 실행되는 경우.
  • 병렬 . 우선 순위가 애플리케이션 최고 성능이고 대기 시간 요구 사항이 없는 경우(또는 1초 이상의 일시 중지가 허용됨).
  • CMS/G1 . 응답 시간이 전체 처리량보다 더 중요한 경우 가비지 수집 일시 중지는 1초 미만이어야 합니다.
  • ZGC . 응답 시간이 높은 우선 순위 및/또는 매우 큰 힙이 관련된 경우.

7.2* 가비지 수집 권장 사항

수동 트리거 방지

가비지 수집의 기본 메커니즘 외에도 Java에서 이 프로세스에 대한 가장 중요한 점 중 하나는 비결정적이라는 것입니다. 즉, 런타임에 정확히 언제 발생할지 예측할 수 없습니다.

System.gc() 또는 Runtime.gc() 메서드를 사용하면 코드에 힌트를 포함하여 가비지 수집기를 시작할 수 있지만 이것이 실제로 실행된다는 보장은 없습니다.

분석 도구 사용

애플리케이션을 실행할 메모리가 충분하지 않으면 속도 저하, 긴 가비지 수집 시간, "월드 스톱" 이벤트, 결국 메모리 부족 오류가 발생합니다. 이는 힙이 너무 작음을 나타낼 수 있지만 응용 프로그램에 메모리 누수가 있음을 나타낼 수도 있습니다.

jstat 또는 Java Flight Recorder와 같은 모니터링 도구를 사용하여 힙 사용량이 무한정 증가하는지 확인할 수 있으며 이는 코드의 버그를 나타낼 수 있습니다.

기본 설정 선호

작은 독립 실행형 Java 애플리케이션이 있는 경우 가비지 수집을 설정할 필요가 없을 것입니다. 기본 설정이 도움이 될 것입니다.

JVM 플래그를 사용하여 사용자 지정

Java에서 가비지 수집을 설정하는 가장 좋은 방법은 JVM 플래그를 설정하는 것입니다. 플래그는 가비지 수집기(예: Serial, G1 등), 힙의 초기 및 최대 크기, 힙 파티션의 크기(예: Young generation, Old generation) 등을 설정하는 데 사용할 수 있습니다. 더.

올바른 수도꼭지 선택

초기 설정 측면에서 좋은 가이드라인은 사용자 지정 응용 프로그램의 특성입니다. 예를 들어 동시 가비지 컬렉터는 효율적이지만 종종 "월드 스톱" 이벤트를 발생시키므로 긴 일시 중지가 허용되는 내부 처리에 더 적합합니다.

동시에 CMS 가비지 컬렉터는 대기 시간을 최소화하도록 설계되어 응답성이 중요한 웹 애플리케이션에 이상적입니다.

코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION