2008-10-14 56 views
13

Tôi là một n00b tuyệt đối trong nền tảng java Tôi muốn biết liệu tôi có cần thay đổi bất kỳ thứ gì trong mã của mình để có được lợi ích của JRE 64bit không?Lợi ích của nền tảng Java 64bit

hoặc là nó giống như khi tôi khởi tạo nó bằng "java -d64" nó sẽ chạy trong một số chế độ turbo?

Trợ giúp của bạn được đánh giá cao

Trả lời

3

Bạn không phải thay đổi gì cả. Không giống như C hoặc C++, Java có một thông số được viết cho nó để đảm bảo rằng các int (và các kiểu dữ liệu khác) luôn có cùng độ dài bất kể bạn đang ở trên nền tảng nào.

1

Có, bạn không cần phải thay đổi bất cứ điều gì. Đó là JRE khác, không phải mã bạn viết.

5

Vì JVM, nơi mã được thực thi, nên hoạt động giống nhau (số nguyên luôn được ký 32 bit, v.v.), mã của bạn được đảm bảo (theo lý thuyết) để chạy giống nhau, bất kể bạn chạy nền tảng nào.

Sự khác biệt bit 32/64 có trong cách JVM có thể tối ưu hóa thời gian chạy. Vì vậy, trong khi bytecode được thực thi vẫn giữ nguyên, nó có thể (hoặc có thể không) được tối ưu hóa theo một cách khác.

Tóm lại, một hệ thống 64 bit chạy Java có thể thực thi mã nhanh hơn hệ thống tương đương 32 bit.

7

Không bạn không cần phải thay đổi bất cứ điều gì. Không có lợi ích vốn có là sử dụng 64 bit. Trong thực tế nó sẽ làm cho chương trình của bạn lớn hơn trong bộ nhớ vì tất cả các con trỏ sẽ trở thành 64 bit rộng thay vì 32 bit.

Lợi thế duy nhất xuất hiện khi bạn đang thực hiện các phép tính 64 bit, ví dụ: sử dụng nhiều thời lượng trong mã của bạn hoặc nếu ứng dụng của bạn yêu cầu bộ nhớ nhiều hơn 4GB.

+0

Không phải là một lợi ích, ít nhất là trên Windows, khả năng sử dụng nhiều bộ nhớ hơn khoảng 1,5 GB? Có một số giới hạn như vậy đối với một quá trình Java 32-bit. http://mystyleit.com/blogs/mystyleit/archive/2009/05/27/32bit-windows-memory-and-java.aspx – Jonik

+1

Không phải là các JVM 64 bit mới nhất thông minh hơn một chút về việc gán tham chiếu? Tức là, chỉ sử dụng các tham chiếu 32 bit nếu nó không cần 64 bit đầy đủ. Tôi nghĩ tôi đọc ở đâu đó. –

13

Phiên bản trước của tôi, trong khi không phải là sai, là một sự đơn giản hóa quá mức.

Thay đổi từ 32 đến 64 bit sẽ không tự động làm cho ứng dụng của bạn chạy nhanh hơn, có thể trong một số trường hợp sẽ dẫn ngược lại. Trên mặt "phủ định" Thực hiện việc tham chiếu các con trỏ bộ nhớ trong JVM có thể mất nhiều thời gian hơn với các con trỏ 64 bit hơn 32 bit. Thu thập rác đầy đủ và nén của một đống 16 GB có thể mất nhiều thời gian hơn so với một đống 2 GB.

Về mặt tích cực: Có hướng dẫn xử lý 64 bit hiệu quả hơn các bit 32 bit. JVM 64 bit sẽ cho phép bạn có kích thước heap lớn hơn 2^32 lần so với, ít hơn một chút, 4 GB mà bạn có thể nhận được với 32 bit. (Nếu bạn đủ khả năng để mua số lượng RAM đó) Một số JVM có thể làm việc với các tham chiếu đã nén nếu bạn có kích thước heap nhỏ hơn 4 GB, cho bạn lợi thế của hướng dẫn 64 bit mà không phải trả giá tham chiếu 64 bit .

Nếu bạn có JVM tốt, tôi sẽ chuyển đến 64 bit bất kể kích thước heap, chỉ cần chuẩn bị rằng bạn có thể phải thực hiện một hit hiệu suất để có một đống thực sự lớn.

8

Tôi không nghĩ rằng JVM 64 bit sẽ đạt được hiệu suất của ứng dụng? Làm sao?

Trong thực tế, bộ xử lý 64 bit chậm hơn một chút. Chúng có đường dẫn giải mã phức tạp hơn (hỗ trợ lùi của các hoạt động 32 bit). Họ cần thông lượng bộ nhớ nhiều hơn (tất cả các con trỏ có kích thước gấp đôi phải không?). Điều duy nhất bạn có trên bộ vi xử lý 64 bit là rất nhiều RAM.Và kích thước là tốc độ, như chúng ta biết. Rất nhiều RAM có thể đạt được hiệu suất của một số ứng dụng rất hay (nếu ứng dụng có thể sử dụng nó). Vì vậy, 64 bit - không. Rất nhiều RAM - chắc chắn là có.

Có một điều nữa mà bộ xử lý 64 bit có thể làm nhanh hơn. Viết/đọc nguyên tử của các số 64 bit. Nếu bạn làm việc với các số 64 bit (dài trong java), bộ vi xử lý 64 bit sẽ tốt hơn, vì chúng có các chỉ dẫn CAS máy để làm việc với các loại số đó.

+2

bộ hướng dẫn AMD64 cho thấy nhiều thanh ghi hơn cho các chương trình, do đó dẫn đến cải thiện tốc độ thực thi tiềm năng – Sebastian

2

Bạn có bất kỳ JNI nào trong mã ứng dụng của mình không? Sau đó, có thể bạn cần phải lo lắng về 32 so với 64 bit nhị phân bản địa.

32 hoặc 64 giống với mã Java của bạn. Các khía cạnh hiệu suất dường như được bao phủ bởi các áp phích trước đó.

0

Tôi nhận thấy rằng các JVM 64 bit đã chậm hơn phiên bản 32 bit. Tuy nhiên với phiên bản mới nhất Java 6 update 14 Tôi đã thấy nhiều thử nghiệm của tôi nhanh hơn một chút với phiên bản 64 bit so với 32 bit. Dù bằng cách nào thì chỉ có chênh lệch 5% đến 10%.

Cho dù chương trình của bạn sử dụng phiên bản 32 bit hay 64 bit là tùy thuộc vào lựa chọn JVM bạn sử dụng. Như đã đề cập, bạn cần kiểm tra xem bạn có thư viện được chia sẻ thích hợp hay không. (hoặc lý tưởng là không)

Sự khác biệt chính là có thể sử dụng nhiều bộ nhớ đặc biệt hơn nếu bạn cần 4 GB trở lên.

0

Hãy thử điều này:

public class Benchmark { 
public static void main(String args[]) { 
long time = System.currentTimeMillis(); 
for (int a = 1; a < 900000000; a++) { 
    for (int b = 1; b < 20; b++) { 
    } 
} 
long time2 = System.currentTimeMillis() - time; 
System.out.println("\nTime counter stopped: " + time2); 

}

Trong 32 và 64 bit và cười nhạo sự khác biệt.

+5

Mô tả sự khác biệt sẽ hữu ích trong trường hợp này. –