2011-03-03 8 views
5

우리는 약 128MB 메모리 만 필요로하는 Java로 작성된 스윙 응용 프로그램을 개발 중이며 짧은 시일 내에 4GB와 같은 더 많은 메모리가 필요하다는 것을 알지 못합니다. 이전에는 32 비트 Windows 용, 32 비트 Linux 용 및 64 비트 Linux 용, JRE가 포함 된 설치 프로그램과 함께 항상 3 가지 릴리스를 제공합니다. 64 비트 버전은 2 주 전까지는 아무도 사용하지 않았고 32 비트 버전보다 약 40-50 % 더 많은 메모리를 소비하기 때문에 OutOfMemoryException이보고되었습니다.64 비트 OS에서 32 비트 또는 64 비트 응용 프로그램을 사용 하시겠습니까?

내 질문에 애플리케이션이 4GB 이상의 메모리를 사용할 필요가 없다면 64 비트 Linux 용으로 64 비트 버전을 제공해야합니까? 우리는 32 비트 버전이 64 비트 Linux에서도 작동 함을 보여주는 몇 가지 빠른 테스트를 실시했습니다. 하지만 우리가 가질 수있는 단점이 무엇인지 모릅니다. 성능 및/또는 호환성 문제가 있습니까?

+0

좀 더 명확하게 설명해 드리겠습니다. 32 비트 버전이 사용 중입니다. 최대 메모리 128MB, 64 비트 버전의 경우 192MB가 필요할 수 있으므로 추가 64 비트 설치 프로그램을 만들지 않아도되지만 다른 구성을 만들어야 만 모든 것이 복잡해집니다. 그리고 모든 버전에 192MB를 사용하면 32 비트 버전이 지금까지 가장 많이 사용되기 때문에 메모리 누수가 눈에 띄지 않을 수 있습니다. 한 가지 더 중요한 것은 많은 응용 프로그램이 해당 서버에서 실행될 수 있으므로 가능한 한 메모리 소비를 줄이려고합니다. –

+0

64 비트 JVM에서 32 비트 참조를 사용하는 경우 더 많은 메모리가 필요하지 않습니다. –

답변

3

응용 프로그램이 64 비트 호스트 운영 체제에서 개선되지 않고 32 비트 릴리스와 호환되는 경우 즉시 제공 할 필요가 없습니다.

그러나 대부분의 경우 새로운 시스템이 아니라면 x64 아키텍처를 기반으로하며 64 비트 소프트웨어도 자연스러운 기본값이어야한다고 주장합니다. 이러한 요구는 하드웨어 수준에 가까워 질수록 강력 해집니다. 일부 32 비트 VPN 클라이언트를 지원하기 위해 가상 운영을 실행하는 것이 얼마나 힘든지 말할 수 없습니다.

64 비트 클라이언트를 승격하는 것이 선호되는 선택이라면 다운로드 통계에 영향을 미칩니다.

2

대부분의 32 비트의 JVM은 약 1.2-1.5 기가 바이트로 제한됩니다.

응용 프로그램이 64 비트 JVM에서 더 많은 메모리를 사용하는 경우 -XX:+UseCompressedOops을 시도하면 64 비트 JVM이 32 비트 참조를 사용하지만 여전히 32GB 메모리에 액세스 할 수 있습니다.

1

내 응용 프로그램이 4GB 이상의 메모리를 사용할 필요가 없다면 내 질문에 64 비트 Linux 용 64 비트 버전을 제공해야합니까?

응용 프로그램이 그렇게 많은 메모리를 필요로하지 않으면 64 비트 설치 프로그램/JVM은 아무 가치도 추가하지 않습니다. 반대로, (관찰 한대로) 더 많은 메모리를 사용하기 때문에 결과적으로 느리게 실행되기 때문에 바람직하지 않습니다.

(사실, 실제 제한 4GB의 미만이어야합니다. 32 비트 주소 공간의 일부 때문에 하드웨어 아키텍처의 문제로 인해 사용할 수 없게됩니다.)

난 당신이 64 비트 버전을 철회 제안하지만, 사용자가 별도로 다운로드하여 설치 한 JVM을 사용할 수있는 기능을 제공합니다. (JRE의 임베디드 복사본은 사람들이 최신 JVM 보안 픽스를 얻기 위해 업그레이드 할 때 간과되는 경향이 있습니다 ...)

관련 문제