java - 설정 - vm 옵션




사용 가능한 RAM보다 큰 최대 힙 크기를 지정하면 어떻게됩니까? (2)

극적인 아무것도

비록 특정 로우 엔드 임베디드 시스템에서 발생할 수 있지만, 요즘은 데스크탑이나 서버에서 임베디드 및 불가능한 경우에도 비 가상 자바 환경을 보는 것은 매우 드뭅니다.

따라서 극적인 일은 발생하지 않지만 사용 가능한 RAM을 사용하면 추가 (가상) 메모리를 할당하면 불필요하게 교정 (가비지 수집)이 지연되고 프로그램이 paging 을 시작하게됩니다.

가혹한 경우,이 상태는 " thrashing "이라고 불리우며 좋은 것은 아닙니다. 물건은 천천히 달릴거야.

인터뷰에서 물었다. 사용 가능한 RAM보다 큰 최대 힙 크기 (Xmx)를 지정하면 어떻게됩니까? 또한 사용 가능한 RAM보다 큰 최소 힙 크기 (Xms)를 지정하면 어떻게 될지 궁금합니다.


알아내는 가장 쉬운 방법은 시도해 보는 것입니다.

편집 : 사실 적어도 두 가지 질문에 대한 답변이 있습니다. 아마도 64 비트 시스템에서 언급했듯이 앱이 성장하고 메모리 사용량이 증가하고 스 래싱이 시작될 수 있습니다. 32 비트 시스템에서는 OS가 많은 양의 힙 공간을 줄 수 없기 때문에 스토리가 조금 다릅니다. 예를 들어 Windows XP에서 32 비트 java로 명령 줄 옵션 -Xmx2000m을 사용하여 응용 프로그램을 실행하면 다음과 유사한 메시지가 나타납니다.

잘못된 최대 힙 크기 : -Xmx2000m

지정된 크기가 최대 크기를 초과합니다.

자바 가상 머신을 만들 수 없습니다.

32 비트 자바가있는 리눅스에서는 -Xmx3000m을 사용하여 다음을 얻습니다.

자바 가상 머신을 만들 수 없습니다.

VM 초기화 중 오류가 발생했습니다.

오브젝트 힙에 충분한 공간을 확보 할 수 없습니다.

32 비트 자바가있는 리눅스에서는 -Xmx6000m을 사용하여 다음을 얻습니다.

잘못된 최대 힙 크기 : -Xmx6000m

지정된 크기가 최대 크기를 초과합니다.

자바 가상 머신을 만들 수 없습니다.

64 비트 Java로이 작업을 시도하면 JVM을 사용하면 실제 RAM보다 더 많은 메모리를 할당 할 수 있지만 매우 많은 양의 메모리를 요청하면 jvm이 오류로 다시 실패합니다.







memory