Số tiền tối đa của không gian heap mà người ta có thể phân bổ cho java trên nền tảng 64-bit là gì? Là nó không giới hạn?Bộ nhớ tối đa cho 64bit Java
Trả lời
Về mặt lý thuyết 2 , nhưng có thể có những hạn chế (rõ ràng)
Theo this FAQ nó chỉ bị giới hạn bởi bộ nhớ và không gian hoán đổi trên hệ thống địa phương:
Ngày 64-bit máy ảo, bạn có 64 bit của địa chỉ để làm việc với kết quả trong một kích thước heap Java tối đa chỉ giới hạn bởi số lượng bộ nhớ vật lý và không gian hoán đổi mà hệ thống của bạn cung cấp.Xem thêm Tại sao tôi không thể có được vùng heap lớn hơn với JVM 32 bit?
Cũng nên nhớ rằng bạn cần đặt heap tối đa qua dòng lệnh. Không có lệnh -Xmx. mà không có nó Java sử dụng 64mb + 30% = 83.2mb như một heap tối đa mặc định trên các máy 64 bit theo cùng một câu hỏi thường gặp.
java -Xmx1000g myClass
hoạt động tốt trên máy của tôi. Nhưng dường như nó vẫn chưa hỗ trợ công cụ sửa đổi 't', do đó bạn không thể chỉ định bộ nhớ tối đa bằng terabyte :)
1000g phù hợp với bạn? Tôi nghĩ rằng 'java' sẽ xác nhận nếu có đủ bộ nhớ trước khi tham gia vào tùy chọn đó. – asgs
Nếu bạn có thể biến mọi nguyên tử trong vũ trụ thành một byte RAM, bạn có thể phân bổ nó trong không gian địa chỉ 64 bit.
Thực ra, đó là một chút cường điệu.
Có 10^80 nguyên tử trong vũ trụ (theo WolframAlpha) và 2^64 byte không gian địa chỉ trong hệ thống 64 bit, vì vậy bạn chỉ có thể giải quyết 1 trong mỗi 5x10^60 nguyên tử . Nhưng nếu bạn có 18 triệu byte RAM, bạn có thể cần một vài lỗ đen lượng tử để cấp nguồn cho nó.
@Stephen, tôi đã chỉnh sửa câu trả lời trước khi bạn đăng nhận xét của mình. Quy tắc WolframAlpha! –
Sẽ không muốn chờ đợi toàn bộ số tiền đó! – overthink
Bạn cần 266 bit để lập chỉ mục mọi nguyên tử trong vũ trụ –
Về lý thuyết, nó nằm giữa 2^63
và 2^64
byte.
Trong thực tế, nó bị giới hạn bởi dung lượng bộ nhớ vật lý và không gian hoán đổi có sẵn trên máy của bạn. Và bộ nhớ vật lý bị giới hạn bởi chipset của bạn (tức là số chân địa chỉ trên bus địa chỉ bộ nhớ vật lý) và bo mạch chủ (tức là số lượng và kích thước của các ổ cắm DIMM).
Đối với AMD64, các thông số kỹ thuật hiện tại thấy trước 40-52 chân địa chỉ. Ngoài ra, chúng hỗ trợ kiến trúc NUMA trong đó mỗi bộ xử lý có một bộ nhớ mà các bộ vi xử lý khác chỉ có thể truy cập gián tiếp. – MSalters
Điều này có thể phụ thuộc vào hệ thống máy ảo của bạn đang chạy. Nếu bạn đang chạy kiến trúc AMD x64, không gian địa chỉ của bộ xử lý hiện được vận chuyển sử dụng 48 bit, chứ không phải 64. Điều này dẫn đến tối đa lý thuyết khoảng 256 TB. (Xem http://en.wikipedia.org/wiki/X86-64)
Tôi không phải là chuyên gia về máy ảo, nhưng mọi hệ điều hành hiện đại thường sẽ cung cấp nhiều bộ nhớ hơn vì có RAM vật lý cộng với bộ nhớ ảo có sẵn. Có lẽ đó là những gì VM sẽ chuyển đến ứng dụng của bạn tùy thuộc vào cấu hình của nó.
Sổ tay AMD có liên quan nói rằng không gian địa chỉ ảo thực ra là 64 bit (Chương 2.2.1, Sổ tay Lập trình Kiến trúc AMD64, v3.14, 09.2007) – MSalters
Với các máy ảo gần đây từ Sun, kích thước giới hạn heap thực tế thường gấp 512 lần bộ nhớ vật lý và/hoặc ảo sẵn có. Ngay cả khi giới hạn lý thuyết cao hơn nhiều, VM sẽ phân bổ 1 byte cho mục đích maangement cho mỗi 512 byte bộ nhớ heap khi khởi động, vì vậy 1TB của heap sẽ ngay lập tức yêu cầu 2GB cho việc quản lý bộ nhớ.
- 1. 64bit Cấp phát bộ nhớ
- 2. Kích thước bộ nhớ cache tối đa
- 3. Dung lượng bộ nhớ tối đa cho mỗi quá trình Java trên Windows?
- 4. Cấp phát bộ nhớ tối đa trên CPU mởCL
- 5. Giới hạn bộ nhớ ứng dụng tối đa trong iPad?
- 6. Tăng kích thước heap tối đa JVM cho các ứng dụng chuyên sâu bộ nhớ
- 7. Giảm mức sử dụng bộ nhớ tối đa với @autoreleasepool
- 8. Giới hạn bộ nhớ tối đa cho mỗi ứng dụng cho Android 2.2 là bao nhiêu?
- 9. TV AIR - có thể giới hạn bộ nhớ tối đa cho thời gian chạy không?
- 10. Kích thước tối đa mặc định cho bộ nhớ cache Google Guava là gì?
- 11. Thời gian hết hạn tối đa cho Dịch vụ bộ nhớ cache trong Google Apps Script
- 12. Làm cách nào để đặt bộ nhớ jvm tối đa (XMX) cho tệp jar
- 13. Làm cách nào để đặt mức sử dụng bộ nhớ tối đa cho JVM?
- 14. Bộ nhớ riêng tối đa có thể được cấp phát cho ứng dụng android
- 15. Giá trị tối đa cho tiêu đề kiểm soát bộ nhớ cache trong HTTP
- 16. tối ưu hóa kích thước bộ nhớ trong java
- 17. đa Python và bộ nhớ
- 18. đề tối đa OS X Java cho mỗi quá trình
- 19. Tomcat - Cách giới hạn bộ nhớ tối đa Tomcat sẽ sử dụng
- 20. Sử dụng bộ nhớ tối đa không vượt quá giới hạn
- 21. có kích thước tối đa cho bộ nhớ trong Android được phân bổ cho ứng dụng không?
- 22. ca cao 64bit nhị phân bị rò rỉ bộ nhớ? (phát hành NSData không miễn phí bộ nhớ)
- 23. Tối đa hóa JInternalFrame trong Java
- 24. đếm tối đa cho count (*)
- 25. Kích thước tối đa cho StringBuffer
- 26. Chrome có bỏ qua Kiểm soát-Bộ nhớ cache: độ tuổi tối đa không?
- 27. java.net.SocketException: Không có dung lượng bộ nhớ đệm (kết nối tối đa đã đạt được?): JVM_Bind
- 28. Tối đa hai bộ dữ liệu
- 29. Theo dõi * tối đa * sử dụng bộ nhớ bằng chức năng Python
- 30. Các dòng tối đa và tối đa
Tại sao bạn nghĩ nó không giới hạn? –