2014-06-19 3 views
1

우리의 응용 프로그램은 2GB 힙으로 실행하는 것이 가장 이상적이지만 사용자가 32 비트 JRE (1GB는 최대 지원) 인 경우 1GB 힙으로 더 느리게 실행할 수 있습니다.Java Web Start에서 32 비트와 64 비트 JRE의 가용성 감지

현재 우리는 브라우저의 사용자 에이전트 필드를 사용하여 브라우저가 64 비트인지 여부를 감지하고, 그렇다면 JNLP를 생성하여 최대 힙을 2GB로 지정합니다. 32 비트 브라우저는 MaxHeap = 1GB를 가지므로 응용 프로그램이 제대로 작동하지 않습니다.

우리는 64 비트 OS를 감지하고 브라우저가 64 비트 JRE를 반드시 설치해야하는 것은 아니기 때문에 문제가 있음을 깨달았습니다. 최대 힙 크기를 1GB 이상으로 지정하면 시작시 32 비트 JVM이 충돌합니다.

JVM 메모리 설정을 지정하는 유일한 방법은 JNLP의 인수를 사용하는 것이므로 우리가 제공하는대로 다시 작성하려고합니다. 그러나 서버가이 작업을 수행하는 데 신뢰할만한 방법이 없다고 생각합니다. 누구나 같은 문제가 있었는지, 해결책을 내놓으시겠습니까?

답변

1

나는 이것이 가능해야한다고 생각합니다. JNLP 파일에서는 arch 속성이 서로 다른 복수 <resource> 요소를 지정할 수 있습니다. 이 경우 arch은 사용중인 JRE의 아키텍처 인 not the actual architecture of the machine에 해당하므로 원하는대로 처리합니다. 이 같은

시도 뭔가 : 선택이 제대로 수행되고 있는지 나는 다른 Java 버전 및 JVM 플래그를 넣었습니다

<resources arch="x86"> 
    <j2se version="1.8" max-heap-size="1G" java-vm-args="-ea"/> 
    </resources> 
    <resources arch="amd64"> 
    <j2se version="1.7" max-heap-size="4G"/> 
    </resources> 
    <!-- Default to be used in case architecture is not recognised --> 
    <resources> 
    <j2se version="1.6" max-heap-size="16G"/> 
    </resources> 

은, 그냥 분명 확인합니다.

+0

지연에 대한 사과 - 이것은 대우를받습니다 - 많은 감사드립니다. – user3754563