답변:
힙 ( -Xms
및로 지정) 외에도 힙 -Xmx
이 아닌 영역을 포함해야합니다. 이들은 포함합니다
DirectByteBuffer
s가 나오는 곳), 처음에는 64MBJVM 자체의 작업 공간도 수십 MB가 될 것입니다.
서버 클래스 시스템을 사용할 때 Sun JVM의 자동 크기 조정 도 알고 있어야 합니다 . 시간이 지남에 따라 서버 클래스 (2Gb 메모리, 둘 이상의 코어) 의 정의에 따라 일부 감가 상각이 발생하여 이제 대부분의 컴퓨터가 -server
최적화 를 트리거 할 수 있습니다. 내 충고는 항상 이유를 생각할 수 없다면 항상 -Xms
및 -Xmx
설정 을 지정 하고 전달 -server
하는 것입니다.
-Xmx 옵션을 사용하면 JVM이 예약 하는 힙 크기를 제한 합니다 ... JVM에 필요한 추가 자원이 있습니다 ...
"메모리에 감사합니다"*는 JVM이 메모리를 사용하는 방법을 설명하는 좋은 기사입니다 ...
그 외에도 IBM의 JVM을 사용해 볼 수 있지만 Tomcat과 함께 작동해야합니다. 무료 JVM 구현 중 일부가 작동하는지 모릅니다.
그럼에도 불구하고, 나는 메모리가 적은 기계가 당신을 도울 것이라고 생각하지 않습니다. 자바는 단지 메모리가 필요하다.
* 새로운 사용자는 하이퍼 링크를 제출할 수 없으므로 해당 기사를 직접 찾아봐야합니다. "메모리 ibm에 대한 감사"에 대한 Google의 첫 번째 기사입니다.
또한 메모리 사용량이 적은 JRockit JVM을 사용해보십시오. BEA 라이센스가있는 JRockit 버전은 여전히 무료로 다운로드 할 수 있습니다. 즉, 오라클이 BEA를 인수하기 전의 버전.
다운로드 링크는 http://forums.oracle.com/forums/thread.jspa?threadID=816133&tstart=0 을 참조 하십시오 .
내가 찾은 유용한 기술 중 하나는 JMX 모니터링을 사용하여 힙 대 permgen 공간에 사용되는 메모리 양을 정확히 확인하는 것입니다.
여기에 설명 된대로 Tomcat에서 JMX를 설정하십시오. http://tomcat.apache.org/tomcat-6.0-doc/monitoring.html
그런 다음 JConsole (JDK 5 또는 JDK 6과 함께 제공)을 사용하십시오. 메모리 태그는 시간이 지남에 따라 메모리 소비를 추적합니다.
또한 웹앱의 소프트 재시작에주의하십시오. webapp를 다시로드하면 permgen 공간이 가비지 수집되지 않고 시간이 지남에 따라 쌓입니다. permgen 공간을 확보하려면 Tomcat을 완전히 중지 / 시작해야합니다.