2011-03-03 40 views
5

Chúng tôi đang phát triển một ứng dụng xoay được viết bởi Java chỉ yêu cầu bộ nhớ khoảng 128MB và trong tương lai ngắn, tôi không thấy nó đòi hỏi nhiều bộ nhớ hơn 4GB. Trước đây chúng tôi cung cấp 3 bản phát hành khác nhau, một phiên bản dành cho Windows 32 bit, một cho Linux 32 bit và một phiên bản khác dành cho Linux 64 bit, với trình cài đặt đã bao gồm JRE. Phiên bản 64 bit không được bất kỳ ai sử dụng cho đến vài tuần trước, và một OutOfMemoryException đã được báo cáo vì ứng dụng tiêu thụ bộ nhớ nhiều hơn khoảng 40-50% so với phiên bản 32 bit.Ứng dụng 32 bit hoặc 64 bit trên hệ điều hành 64 bit?

Câu hỏi của tôi là cần thiết để chúng tôi cung cấp phiên bản 64 bit cho Linux 64 bit nếu ứng dụng sẽ không bao giờ cần sử dụng bộ nhớ nhiều hơn 4GB? Chúng tôi đã có một số thử nghiệm nhanh chóng cho thấy rằng phiên bản 32 bit cũng hoạt động trên Linux 64 bit. Nhưng tôi không chắc chắn những gì có thể là nhược điểm, chúng tôi sẽ có, ví dụ hiệu suất và/hoặc vấn đề tương thích?

+0

Để tôi làm rõ một chút: phiên bản 32 bit đang sử dụng 128MB là bộ nhớ tối đa, cho phiên bản 64bit, nó có thể yêu cầu 192MB, vì vậy chúng tôi không chỉ phải tạo thêm bộ cài đặt 64 bit mà còn phải tạo các cấu hình khác nhau, điều này làm cho toàn bộ điều phức tạp hơn. Và nếu chúng ta sử dụng 192MB cho tất cả các phiên bản thì nó có thể làm cho rò rỉ bộ nhớ không hiển thị cho chúng ta bởi vì phiên bản 32 bit được sử dụng thường xuyên nhất hiện nay. Một điều nữa là nhiều ứng dụng có thể chạy trên máy chủ đó vì vậy chúng tôi muốn giảm mức tiêu thụ bộ nhớ càng thấp càng tốt. –

+0

Nó sẽ không yêu cầu nhiều bộ nhớ hơn nếu bạn sử dụng các tham chiếu 32 bit trong một JVM 64 bit. –

Trả lời

3

Nếu ứng dụng của bạn không có cải tiến cho hệ điều hành máy chủ 64 bit và tương thích với bản phát hành 32 bit của bạn thì tôi không thấy cần phải cung cấp ngay.

Tuy nhiên, hầu hết, nếu không phải tất cả hệ thống mới đều dựa trên kiến ​​trúc x64, nơi tôi ủng hộ phần mềm 64 bit đó phải là mặc định tự nhiên. Điều này cần phát triển mạnh mẽ hơn, bạn càng gần đến mức phần cứng. Tôi không thể cho bạn biết làm thế nào awkard nó là để chạy một hoạt động ảo chỉ để hỗ trợ một số khách hàng VPN 32-bit.

Quảng cáo ứng dụng khách 64 bit có thể sẽ tác động đến thống kê tải xuống của bạn nếu bạn quyết định chọn nó làm lựa chọn ưu tiên.

2

Hầu hết các JVM 32 bit được giới hạn trong khoảng 1,2-1,5 GB.

Nếu bạn thấy ứng dụng của mình sử dụng nhiều bộ nhớ hơn với JVM 64 bit, hãy thử -XX:+UseCompressedOops cho biết JVM 64 bit sử dụng tham chiếu 32 bit nhưng vẫn có thể truy cập 32 GB bộ nhớ.

1

Câu hỏi của tôi là cần thiết để chúng tôi cung cấp phiên bản 64 bit cho Linux 64 bit nếu ứng dụng sẽ không bao giờ cần sử dụng bộ nhớ nhiều hơn 4GB?

Nếu ứng dụng sẽ không bao giờ cần nhiều bộ nhớ, trình cài đặt 64 bit/JVM không thêm giá trị. Ngược lại, nó là một lựa chọn nghèo bởi vì (như bạn quan sát) nó chỉ đơn giản là sử dụng bộ nhớ nhiều hơn và (có lẽ) chạy chậm hơn như là một kết quả.

(Trên thực tế, giới hạn thực tế sẽ ít hơn 4GB. Một số phần của không gian địa chỉ 32-bit sẽ không sử dụng được, vì các vấn đề kiến ​​trúc phần cứng.)

tôi đề nghị bạn rút phiên bản 64 bit, nhưng cung cấp cho người dùng khả năng sử dụng JVM mà họ đã tải xuống và cài đặt riêng. (Thật vậy, bạn có lẽ nên làm điều sau. Dù sao, các bản sao nhúng của JRE có xu hướng bị bỏ qua khi mọi người nâng cấp để nhận các bản sửa lỗi bảo mật JVM mới nhất ...)

Các vấn đề liên quan