Tại sao các kiến trúc sư của Java không thể để chúng tôi đơn giản làm:
java -jar -myProp="Hello World" myProgram.jar
Nó có thể hoạt động ngày hôm nay nhưng giả sử rằng trong các phiên bản Java tiếp theo, một -myProp
đối số được giới thiệu dưới dạng tùy chọn JVM.
Làm thế nào để phân biệt tùy chọn của bạn -myProp
với -myProp
tùy chọn JVM? Không đời nào.
Vì vậy, nó tồn tại một lý do hiển nhiên để sử dụng -D
để xác định các thuộc tính hệ thống.
Ví dụ khác, thay vì -myProp
giả sử chương trình của bạn dựa trên thuộc -client
tính hệ thống.
Nó sẽ không chạy:
java -jar -client="davidxxx" myProgram.jar
Bạn sẽ gặp lỗi JVM chẳng hạn như:
Tùy chọn không được công nhận: -client = davidxxx
như -client
là một tùy chọn tiêu chuẩn JVM không mong đợi giá trị.
Nhưng nếu bạn sử dụng -D-client
, bây giờ nó ổn vì ở đây -Dclient
được định nghĩa là thuộc tính hệ thống khác với -client
tùy chọn JVM tiêu chuẩn:
java -jar -D-client="davidxxx" myProgram.jar
Hoặc bằng cách sử dụng cả hai:
java -jar -client -D-client="davidxxx" myProgram.jar
Để đi xa hơn, không phải tất cả các đối số JVM đều bắt đầu bằng -D
. nhưng hầu hết trong số họ có một tiền tố ( -D
, -X
, -XX
) cho phép trong một cách nọ cách kia để xác định không gian tên.
Bạn có các loại đối số JVM riêng biệt:
1. Tùy chọn tiêu chuẩn ( -D
nhưng không chỉ).
Đây là những tùy chọn được sử dụng phổ biến nhất được hỗ trợ bởi tất cả các triển khai của JVM.
Bạn sử dụng -D
để xác định thuộc tính hệ thống nhưng hầu hết trong số họ không có bất kỳ tiền tố: -verbose
, -showversion
, và như vậy cho ...
2. Tùy chọn Không chuẩn (có tiền tố là -X
)
Các tùy chọn này là các tùy chọn mục đích chung dành riêng cho Máy ảo Java HotSpot.
Ví dụ: -Xmssize
,-Xmxsize
3. Tùy chọn thời gian chạy nâng cao (có tiền tố là -XX
)
Các tùy chọn này kiểm soát hành vi thời gian chạy của máy ảo Java HotSpot.
4. Tùy chọn trình biên dịch JIT nâng cao (có tiền tố -XX
)
Các tùy chọn này kiểm soát quá trình biên dịch động vừa trong thời gian (JIT) do Java HotSpot VM thực hiện.
5. Tùy chọn khả năng bảo trì nâng cao (có tiền tố là -XX
)
Các tùy chọn này cung cấp khả năng thu thập thông tin hệ thống và thực hiện gỡ lỗi mở rộng.
6. Tùy chọn thu gom rác nâng cao (có tiền tố là -XX
)
Các tùy chọn này kiểm soát cách thức thực hiện việc thu gom rác (GC) bởi Java HotSpot VM.