2013-02-11 26 views
10

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

4

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 
+0

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. –

+0

@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ì? –

+0

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. –

2

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.

0

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.

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