2013-09-24 3 views
2

Java 응용 프로그램이 기본 라이브러리를 사용하지 않는다고 가정합니다. 어쨌든 jvm 시작 매개 변수에 지정된 것보다 많은 메모리를 할당 할 수있는 방법이 있습니까?Java 응용 프로그램이 jvm 시작 매개 변수에 지정된 것보다 많은 메모리를 할당 할 수 있습니까?

다른 방법으로 묻기 : Java 애플리케이션이 JVM 시작 매개 변수로 제한되는 것보다 많은 메모리를 할당하지 않는다고 믿을 수 있습니까?

+1

Java * 응용 프로그램 *은 항상 매개 변수로 정의 된 최대 메모리 (힙 크기)보다 많은 것을 사용합니다. 예를 들어보십시오 : http://stackoverflow.com/q/4247735/829571 – assylias

답변

-1

아니요, Java 응용 프로그램은 -Xmx으로 지정된 크기를 초과 할 수 없습니다. 그것이 가능하다면 그것은별로 의미가 없을 것입니다 - 왜 처음에는 -Xmx을 갖는 것을 귀찮게합니까?

사용자가 자신의 크기를 조절할 수있는 프로그램의 예제를 제공했지만 흥미로운 link on Dream.In.Code을 발견했지만 새로운 JVM 프로세스를 생성하여 작동합니다.

2

예, 가능합니다. JVM 힙에 더 많은 메모리를 할당 할 수는 없지만 ByteBuffer.allocateDirect을 사용하거나 사용자 정의 원시 코드를 호출하여 원시 메모리를 할당 할 수 있습니다.

2

실제로 시작 스크립트에 지정된 -Xmx보다 많은 메모리가 필요합니다. GC 내부, JIT 최적화 테이블, 힙 할당, permgen, 스레드 스택 등은 모두 유료입니다.