2016-09-14 1 views
-1

GC 기록에서 힙 사용 메모리가 지속적으로 증가하고 전체 GC가 하루에도 한 번도 말하지 않는 것처럼 보일 수 있음을 알 수 있습니다. 응용 프로그램이 아직 추락하지 않았습니다. 내가 뭘 찾아야하니? 어떤 포인터라도 도움이 될 것입니다. Linux 머신에서 Java 7을 실행 중입니다.내 힙이 꾸준히 증가하고 전체 GC가 발생하지 않는 이유는 무엇입니까?

+1

이렇게해야 할 때만 전체 GC를 수행합니다. 전체 GC를 수행하지 않은 경우 그렇게하지 않아도됩니다. –

+0

메모리 누출 같은 것이 있습니까? – EJoshuaS

+0

Majorure, Full GC라고하는 Tenure 생성 GC가 전체 힙을 정리하고 있습니다. 힙에 여유 메모리가 남아있을 가능성이 큽니다. 대신 주요 GC가 발생하는 빈도와 기간에 초점을 맞 춥니 다. 세계 정지를 중지하십시오. –

답변

0

Java 프로세스 메모리에는 JVM 메모리 공간 (힙 + 소수의 다른 영역)과 비 JVM 메모리 (JVM에서 일부 기본 라이브러리를 사용하는 경우)가 포함됩니다.

일반적으로 힙은 결코 회피하지 않습니다 - 메모리는 JVM에서 다시 사용할 수 있도록 해제되었지만 OS에 릴리스되지 않았습니다 (GC 알고리즘에 따라 다름).

JVM에는 힙 크기를 조절할 수있는 두 가지 옵션이 있습니다 (actually a bit more than 2 options) -Xms-Xmx입니다.

증가하는 프로세스 메모리 풋 프린트는 메모리 누수의 징후 일 수도 있고 아닐 수도 있습니다.

JVM에서 GC 로깅을 활성화하거나 일부 JVM 도구 (예 : JVisualVM)를 사용하여 실제 개체 수의 증가 여부를 확인해야합니다.

Java의 메모리 누수는 일반적으로 간격을 줄여서 "전체 GC"이벤트의 시퀀스로 나타납니다.

JVM 가비지 수집기가 메모리를 OS로 다시 릴리스 할 것으로 예상해서는 안됩니다. 일부 알고리즘은이를 수행 할 수 없습니다. 일부 (예 : G1)는 할 수 있지만 즉시 수행하지 않을 이유가있을 수 있습니다.