2012-01-16 38 views
7

Tôi đang tạo một ứng dụng khá đơn giản để đọc và hiển thị các tệp văn bản và tìm kiếm qua chúng.Java JDK 32 bit và 64 bit

Tôi tự hỏi mình có quan tâm đến việc đề xuất phiên bản 32 và 64 bit cho người dùng hay không.

Sự khác biệt chỉ có quyền truy cập vào nhiều kích thước bộ nhớ heap hơn với phiên bản 64 bit hoặc có bất kỳ sở thích nào khác không?

Will một 32 bit biên soạn chương trình làm việc trên 64 bit JVM (tôi giả sử có)

+4

Miễn là ứng dụng của bạn là Java nguyên bản 100%, không có nhiều khác biệt ngoại trừ kích thước heap có thể. – Thomas

+0

Chỉ cần nhớ rằng các bit JRE 32 và 64 bit là các cài đặt riêng biệt, và hầu hết mọi người chỉ có cài đặt 32 bit theo mặc định (ngay cả trên các máy 64 bit). – Viruzzo

+0

Thanx cho câu trả lời của bạn. Như tôi mong đợi, đối với Java thuần túy, điều này không thay đổi bất cứ điều gì (ngoại trừ kích thước heap). – HpTerm

Trả lời

12

Sự khác biệt duy nhất giữa 32-bit và 64-bit bản xây dựng của bất kỳ chương trình là kích thước của chữ máy, số lượng bộ nhớ địa chỉ và hệ điều hành ABI đang sử dụng. Với Java, đặc tả ngôn ngữ có nghĩa là sự khác biệt về kích thước từ máy và OS ABI không quan trọng chút nào trừ khi bạn đang sử dụng mã gốc. (Mã gốc phải được xây dựng giống như kích thước từ của JVM sẽ tải nó; bạn không thể kết hợp các bản dựng 32 bit và 64 bit trong cùng một quy trình mà không cần mã hóa rất kỳ lạ và bạn không nên làm điều đó với Java về.)

+0

Kích thước của từ gốc có thể tạo ra sự khác biệt cơ bản đối với mã C hoặc C++, đặc biệt nếu được viết sai hoặc bị tấn công, nhưng mã Java sẽ không thấy sự khác biệt nào cả. –

+0

Thanx cho câu trả lời. Đó là rõ ràng với tâm trí của tôi rằng trong Java tinh khiết này sẽ không thay đổi bất cứ điều gì. – HpTerm

+1

@HpTerm: Trong Java thuần túy, tất cả những thay đổi đó là lượng bộ nhớ địa chỉ (tốt) và lượng bộ nhớ cho mỗi đối tượng (không tốt lắm). Không phải là một thay đổi sẽ dẫn đến các vấn đề bạn có thể thấy trừ khi bạn đang chạy gần với giới hạn VM. –

2

Lần duy nhất tôi vung nó là khi có thư viện gốc liên quan đã đẩy nó theo cách này hay cách khác. Nếu bạn chỉ ở Java đất sau đó thực tế, trừ khi bạn cần> 4GB kích thước heap, có rất ít sự khác biệt.

EDIT: Sự khác biệt bao gồm những thứ như nó sử dụng nhiều bộ nhớ hơn 32 bit, đáng kể hơn nếu bạn đang sử dụng phiên bản trước 6u23 và không sử dụng -XX:+UseCompressedOops. Cũng có thể có một sự khác biệt về hiệu suất nhỏ giữa hai, nhưng một lần nữa không có gì lớn.

+0

Bạn không nói "không có sự khác biệt" nhưng nói "rất ít sự khác biệt. Chỉ cần cho kiến ​​thức của tôi giả định tinh khiết Java, là sự khác biệt rất nhỏ này. – HpTerm

+0

@HpTerm Xem câu trả lời cập nhật – berry120

+1

Cảm ơn câu trả lời của bạn – HpTerm

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