Công ty chúng tôi đang có kế hoạch chuyển sang JVM 64 bit để tránh xa giới hạn kích thước tối đa 2 GB. Google đã cho tôi kết quả rất hỗn hợp về hiệu suất JVM 64 bit. Có ai đã thử chuyển sang 64 bit java và chia sẻ kinh nghiệm của bạnTrải nghiệm di chuyển đến JVM 64 bit
Trả lời
Nếu bạn cần đống lớn hơn, sau đó câu hỏi về hiệu suất là khá tranh luận, phải không? Hay bạn có kế hoạch mở rộng theo chiều ngang?
Vấn đề chính mà tôi đã nghe với ứng dụng 64 bit là việc thu gom rác đầy đủ có thể mất nhiều thời gian (vì nó dựa trên số lượng đối tượng trực tiếp). Vì vậy, bạn muốn điều chỉnh cẩn thận các thông số GC để tránh các bộ sưu tập đầy đủ (tôi đã nghe một giai thoại về một công ty có 64 Gb heap, và điều chỉnh GC của họ để họ không bao giờ đến một GC đầy đủ; xuống mỗi tuần một lần).
Ngoài ra, nhận ra rằng Java là 32-bit theo thiết kế, do đó bạn không có khả năng thấy bất kỳ sự gia tăng hiệu suất lớn nào từ việc di chuyển dữ liệu 64 bit cùng một lúc. Và bạn vẫn bị giới hạn chỉ số mảng 32 bit.
Chúng tôi có một JVM, nơi gc chạy song song hoạt động tốt, nhưng nếu gc không được thực hiện khi gc tiếp theo được bắt đầu, JVM tạm dừng cho đến khi gc thứ hai được thực hiện. Xấu! Xảy ra một chút khi hệ điều hành rất tích cực về việc trao đổi bộ nhớ. –
Bạn có thể giải thích ý nghĩa của Java bằng thiết kế 32-bit không? từ những gì tôi biết, Java là nền tảng độc lập bởi thiết kế không? – Pacerier
Nhận xét về 32 bit theo thiết kế là lẻ. Khi chúng ta thảo luận về 32/64/128 bit, nó thường là về kích thước của một con trỏ, ảnh hưởng đến kích thước bộ nhớ làm việc. Thực tế là Java sử dụng ints cho mảng giới hạn kích thước của một mảng duy nhất nhưng một trừu tượng như bộ đệm nio có thể được sử dụng để làm việc hiệu quả xung quanh điều này. Vì đây không phải là hoàn hảo, có những kế hoạch để cho phép các chỉ mục được lâu dài. Tuy nhiên, nó không phải là một hạn chế trong một cách kỹ thuật như một đống tối đa 4Gb. –
Chúng tôi đã viết trực tiếp đến 64bit và tôi có thể thấy không có hành vi tiêu cực ...
trình tốt cho chúng ta. Tại sao bạn không chỉ đơn giản là cố gắng thiết lập nó và chạy bộ thử tải của bạn theo một hồ sơ như jvisualvm?
Tóm lại: JVM 64-bit sẽ tiêu thụ bộ nhớ hơn cho đối tượng tham chiếu và một vài loại khác (nói chung là không đáng kể), tiêu thụ bộ nhớ hơn cho mỗi thread (thường đáng kể trên các trang web có dung lượng lớn) và cho phép bạn có đống lớn hơn (thường chỉ quan trọng nếu bạn có nhiều đối tượng tồn tại lâu dài)
Còn Đáp/bình luận:
Các bình luận rằng Java là 32-bit bởi thiết kế là sai lầm. Java giải quyết bộ nhớ là 32 hoặc 64 bit, nhưng thông số VM đảm bảo rằng hầu hết các trường (ví dụ: int, long, double, , v.v.) giống nhau bất kể.
Ngoài ra - điều chỉnh GC bình luận trong khi thích hợp cho nhiều đối tượng, có thể không có liên quan, GC có thể nhanh chóng trên JVM với đống lớn (Tôi đã làm việc với đống lên đến 15GB, với rất GC nhanh chóng) - nó phụ thuộc nhiều hơn vào cách thức bạn chơi với các chương trình thu thế hệ, và mẫu sử dụng đối tượng của bạn là gì. Trong khi ở những người trong quá khứ đã dành rất nhiều năng lượng các thông số điều chỉnh, nó rất khối lượng công việc phụ thuộc, và hiện đại (Java 5+) JVMs rất tốt tại tự điều chỉnh - trừ khi bạn có nhiều dữ liệu hơn có khả năng gây hại cho chính bạn hơn là giúp đỡ với điều chỉnh JVM tăng cường.
Như đã đề cập trên kiến trúc x86, 64-bit EMT64 hoặc x64 vi xử lý cũng bao gồm hướng dẫn mới cho điều làm như viết nguyên tử, hoặc tùy chọn khác cũng có thể ảnh hưởng ứng dụng hiệu suất cao.
Bạn có thể giải thích ý bạn là gì bởi "các trường (ví dụ: int, long, double, etc.) có giống nhau không"? – Pacerier
Đồng ý lấy khối lượng công việc JVM 32 bit và đặt chúng trên 64 bit tạo hiệu suất và không gian đạt được trong trải nghiệm của tôi. Tuy nhiên, hầu hết các nhà cung cấp JVM lớn giờ đây đã triển khai một công nghệ tốt về cơ bản nén một số đống - nó được gọi là các tham chiếu nén hoặc các vòng nén cho các JVM 64 bit không "lớn" (ví dụ: trong 4). -30gb phạm vi).
Điều này tạo ra sự khác biệt lớn và nên thực hiện chuyển đổi 32-> 64 tác động thấp hơn nhiều.
Tham chiếu cho JVM của IBM: link text
Tôi nghĩ đây là -XX: + UseCompressedOops dành cho oracle jvm – Karussell
- 1. Lợi ích/nhược điểm khi chạy JVM 64 bit trên máy chủ Linux 64 bit?
- 2. Eclipse 32 bit chạy trên 64 bit JVM
- 3. Lập trình Java cho JVM 64 bit
- 4. Bất kỳ trải nghiệm di chuyển Flex 4 nào?
- 5. Delphi 32 đến Delphi XE2 (64 bit) chuyển đổi
- 6. Trải nghiệm phân tích thoát được bật trên JVM
- 7. Có sự khác biệt nào cho Integer.MAX_VALUE giữa JVM 32 bit và JVM 64 bit không?
- 8. Cách di chuyển hai thanh ghi 32 bit vào một bit 64 bit?
- 9. Lỗi AJAX ASP.NET AJAX/32-bit đến 64-bit
- 10. Trải nghiệm MoSync
- 11. Không thể chạy một JVM 64-bit trong 64-bit Windows 7 với một kích thước đống lớn
- 12. Hàm băm từ 64 bit đến 10 bit
- 13. Java JDK 32 bit và 64 bit
- 14. Trải nghiệm Atlassian Crowd?
- 15. Chuyển đổi 32 bit dll sang 64 bit dll
- 16. lua vấn đề chuyển đổi 64 bit
- 17. Trải nghiệm của bạn Di chuyển PHP 4 sang PHP 5
- 18. SWT trên Windows 64-bit
- 19. Không thể tải các thư viện SWT 64 bit trên JVM 32 bit (thay thế tệp SWT)
- 20. Ứng dụng 32 bit hoặc 64 bit trên hệ điều hành 64 bit?
- 21. Yêu cầu bộ nhớ của một tham chiếu đối tượng trên một JVM 64 bit
- 22. 64 bit ODBC Exception
- 23. Ứng dụng Java 64 bit: Hệ điều hành 64 bit, JRE 64 bit và Ứng dụng 64 bit có yêu cầu không?
- 24. Cách cấu hình lại nhật thực để sử dụng JVM 64 bit
- 25. Trải nghiệm và khuyến nghị của Icenium
- 26. di chuyển đến C++ 11
- 27. SDK Android 32 bit hoặc 64 bit trên hệ điều hành Windows 64 bit?
- 28. 32 bit int * 32 bit int = 64 bit int?
- 29. Hiệu suất Java 64 bit
- 30. Phiên bản Boost 64 bit cho các cửa sổ 64 bit
x64 hoặc không phải là x64? Đối với hầu hết các phần nó chỉ làm tăng việc sử dụng bộ nhớ và do đó băng thông bộ nhớ. Đối với x86, AMD đã tạo ra một tập lệnh ít điên hơn x86. –
@ Người dùng, không phải ai cũng bị ám ảnh bởi những con số đó như bạn! : P Một số người (bạn có thể tưởng tượng?) Trả lời chỉ để giúp đỡ. –
@Vladimir Dyuzhev: Bị ám ảnh không phải là vấn đề. Đó là cách cộng đồng hoạt động. Trả lời và chấp nhận là cách người ta xác định ai có lịch sử câu trả lời hay. Không chấp nhận nghĩa là không có lịch sử câu trả lời hay. Nếu không có lịch sử của câu trả lời tốt, thật khó để biết có bao nhiêu niềm tin để đưa vào một câu trả lời. –