Tôi muốn biết nếu không có đối số máy ảo nào của tôi gọi HotSpot Java đang chạy với tùy chọn biên dịch -client, -server hoặc tầng. Khi tôi cung cấp không có đối số VM, cái nào được chọn theo mặc định? Có cách nào để chẩn đoán đầu ra về trình biên dịch JIT nào đang chạy không?Trình biên dịch Java HotSpot JIT nào đang chạy?
Trả lời
Giả sử đây là Hotspot:
-XshowSettings:vm
Ví dụ, trên hộp Windows của tôi tôi nhận được kết quả của:
VM settings:
Max. Heap Size (Estimated): 1.77G
Ergonomics Machine Class: client
Using VM: Java HotSpot(TM) 64-Bit Server VM
Từ chương trình được chạy, bạn có thể truy vấn các java.vm.name
tài sản để phân biệt giữa chế độ máy khách và máy chủ. Trên điểm phát sóng, nó sẽ chứa "Máy chủ" nếu bạn đã sử dụng tùy chọn đó (ví dụ: Java HotSpot(TM) 64-Bit Server VM
).
Theo this page:
theo lớp biên soạn bây giờ là chế độ mặc định cho máy chủ ảo.
Lưu ý: nó hoạt động ngay bây giờ nhưng có lẽ không phải là cách tiếp cận chứng minh trong tương lai nhất.
Phương pháp xác định tốt hơn trình biên dịch JIT nào đang được sử dụng.
Trên một máy tính Windows với 32-bit JDK8:
$ java -version java version "1.8.0" Java(TM) SE Runtime Environment (build 1.8.0-b132) Java HotSpot(TM) Client VM (build 25.0-b70, mixed mode) $ java -XshowSettings -version 2>&1 | grep sun.management.compiler sun.management.compiler = HotSpot Client Compiler $ java -server -XshowSettings -version 2>&1 | grep sun.management.compiler sun.management.compiler = HotSpot Tiered Compilers
Vì vậy, các trình biên dịch Khách hàng là mặc định với Windows 32-bit JDK8 và tùy chọn '-server' giúp bạn 32-bit theo lớp Trình biên dịch.
Trên một máy tính Windows với 64-bit JDK8:
$ java -version java version "1.8.0" Java(TM) SE Runtime Environment (build 1.8.0-b132) Java HotSpot(TM) 64-Bit Server VM (build 25.0-b70, mixed mode) $ java -XshowSettings -version 2>&1 | grep sun.management.compiler sun.management.compiler = HotSpot 64-Bit Tiered Compilers
Vì vậy, theo lớp biên dịch là mặc định với Windows 64-bit JDK8. Oracle không cung cấp máy khách 64 bit.
- 1. in Java hotspot JIT lắp ráp đang
- 2. Khi nào Java nhận được trình biên dịch JIT?
- 3. Ngôn ngữ lập trình nào có trình biên dịch JIT?
- 4. Trình biên dịch java đang chạy trong javascript
- 5. Tháo rời Java JIT biên dịch bytecode bản địa
- 6. Viết một trình biên dịch JIT trong assembly
- 7. scons - chương trình đang chạy sau khi biên dịch
- 8. khi nào java nhanh hơn C++ (hoặc khi nào JIT nhanh hơn được biên dịch trước)?
- 9. Trình biên dịch Java tại thời gian chạy
- 10. Trình biên dịch/trình biên dịch/trình biên dịch C++
- 11. Mã Java "sao chép" được tối ưu hóa bởi trình biên dịch JIT JVM như thế nào?
- 12. .NET CLR JIT có biên dịch mọi phương thức, mọi lúc không?
- 13. biên dịch chương trình java
- 14. Những nhược điểm của việc biên dịch JIT là gì?
- 15. Ở mức độ nào trình biên dịch C# hoặc JIT tối ưu hóa mã ứng dụng?
- 16. Trình biên dịch JIT xử lý các loại giá trị như thế nào?
- 17. Tại sao .net sử dụng trình biên dịch JIT thay vì chỉ biên dịch mã một lần trên máy đích?
- 18. khi java jvm biên dịch bytecode, mã đó đi đâu trong không gian quá trình?
- 19. Sự khác biệt trong JIT giữa Java và .Net
- 20. Phát hiện JIT tại thời gian biên dịch trong MonoTouch
- 21. JIT vs Thông dịch viên
- 22. Lập trình biên dịch java bằng JavaCompiler?
- 23. Cắm vào trình biên dịch Java
- 24. làm thế nào để biên dịch và chạy chương trình java trong một chương trình java khác?
- 25. Trình biên dịch Java sang JavaScript
- 26. Lỗi trình biên dịch Java Generics
- 27. .NET, Java tới trình biên dịch JavaScript
- 28. Trình biên dịch Java AOT miễn phí
- 29. Cách hiểu lỗi Hotspot Java
- 30. Trình biên dịch Prolog/Trình biên dịch được nhúng cho Java
Cảm ơn Jon. Tôi đang chạy Hotspot trên OS X, nhưng đối với Java 1.6 & 1.7 tùy chọn đó không được công nhận, than ôi. –
@JulienChastang: Thật kỳ quặc - điều đó tốt cho tôi trên cả Windows và Linux. 'Java -X' hiển thị những gì? –
Tệ của tôi. Trên thực tế trên 1,6 nó không được công nhận, nhưng trên 1,7 nó mang lại cho tôi các loại thông tin bạn cung cấp ở trên. Thật kỳ lạ, khi tôi cung cấp java -client -XshowSettings: vm nó vẫn tuyên bố là Server. Charles Nutter (http://blog.headius.com/2009/01/my-favorite-hotspot-jvm-flags.html) dường như gợi ý rằng nếu bạn đang ở trên 64 bit, máy chủ là lựa chọn duy nhất. Nó sẽ là tốt đẹp để có được một số rõ ràng về điều này từ Oracle. –