Java 서버 애플리케이션은 할당된 최대 메모리보다 더 많은 RAM을 소비합니다!

Java 서버 애플리케이션은 할당된 최대 메모리보다 더 많은 RAM을 소비합니다!

나는 호스팅 중자바 서버 애플리케이션Linux 루트 서버에서.

내 문제는 때때로 서버가할당된 최대값보다 더 많은 RAM을 차지합니다., 이로 인해 프로세스가 자동으로 종료(충돌)됩니다.

이것은 내 시작 스크립트입니다.

nohup java -Xmx900m -Xms900m -XX:MaxPermSize=128m -jar -Xss1m jar-file.jar &

보시다시피 최소, 최대 RAM(-Xms900, -Xmx900m)도 설정해두었으니 문제 없을 것 같습니다.

내가 뭘 잘못하고 있는지 아는 사람 있나요? 그렇다면 "개선된 시작 스크립트"를 알려주고 보여주세요.

행운을 빕니다, 이시드레스

답변1

실제로 Xms 및 Xmx는 힙 크기 제한을 결정하지만 다른 메모리 영역도 있습니다. 스택(Xss x 스레드 수) + PermGen + CodeCache(Java 7의 기본값 48MB) + 직접 메모리.

일반적으로 사양이 없으면 약 1/2GB 더 많을 것입니다.

관련 정보