가비지 수집으로 운영 체제의 메모리를 확보할 수 있나요?
가비지 수집기(GC)가 실행되면 운영 체제에서 사용되지 않는 메모리를 정리합니다. 프로세스. 일반적인 오해는 이 메모리가 재사용을 위해 항상 프로세스의 메모리 풀 내에 보관되어 프로세스의 메모리가 실제로 감소하지 않는다고 가정하는 것입니다.
그러나 사용되는 HotSpot JVM의 경우는 그렇지 않습니다. 자바에서. 운영 체제에 메모리를 다시 해제하지만 힙 크기 조정에 따른 성능 오버헤드로 인해 마지못해 해제합니다.
메모리 해제 동작에 영향을 미치는 요소
능력 힙을 축소하는 GC의 방법은 다양한 요인에 따라 달라집니다. 요인:
-
가비지 수집기: 수집기마다 힙을 축소하는 다양한 기능이 있습니다.
-
JVM 버전: 힙 축소 기능이 도입되었습니다. 이후 JVM 버전에서는
-
수집기 설정: 특정 수집기에 대해 힙 축소를 활성화하기 위해 몇 가지 추가 옵션을 전달할 수 있습니다.
힙 축소 촉진 방법
힙 축소가 필요한 경우 , 여러 가지 방법이 가능합니다 고용:
-
공격적인 GC 구성: -XX:GCTimeRatio=19, -XX:MinHeapFreeRatio=20 및 -XX:MaxHeapFreeRatio=30과 같은 JVM 옵션을 설정하여 GC 실행 메시지를 표시합니다. 각 주기 후에 사용되지 않는 메모리를 제한합니다.
-
동시 GC: 동시 수집을 더 자주 트리거하려면 -XX:InitiatingHeapOccupancyPercent를 낮은 값으로 설정하세요. 그러면 CPU 리소스가 소모되지만 힙 축소가 가속화됩니다.
-
G1GC 수정 사항: JDK 8에서, 힙 축소를 더 많이 적용하려면 -XX:-ShrinkHeapInSteps를 활성화하세요. 적극적으로.
-
JDK 9: G1PeriodicGCInterval을 통해 G1GC에 대한 프롬프트 메모리 릴리스를 활성화합니다.
-
JDK 12: 유사한 프롬프트 릴리스 동작은 다음을 통해 ZGC에 대해 활성화됩니다. 기본값입니다.
위 내용은 Java 가비지 수집은 메모리를 운영 체제로 반환합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!