Tôi nghĩ rằng nó sẽ là tuyệt vời để có một so sánh giữa _JAVA_OPTIONS
và JAVA_TOOL_OPTIONS
. Tôi đã tìm kiếm một chút cho một, nhưng tôi không thể tìm thấy bất cứ điều gì, vì vậy tôi hy vọng chúng ta có thể tìm thấy kiến thức ở đây trên Stackoverflow.
JAVA_OPTS
được bao gồm cho sự hoàn chỉnh. Nó không phải là một phần của JVM, nhưng có rất nhiều câu hỏi về nó ngoài tự nhiên.
Những gì tôi biết:
Cho đến nay tôi đã phát hiện ra rằng:
JAVA_OPTS
không được JDK sử dụng, mà bởi một loạt các ứng dụng khác (xem bài đăng này ).JAVA_TOOL_OPTIONS
và_JAVA_OPTIONS
là các cách để xác định các đối số JVM như một biến môi trường thay vì các tham số dòng lệnh.- Chúng được nhặt bởi ít nhất
java
vàjavac
- Họ có quyền ưu tiên này:
_JAVA_OPTIONS
(ghi đè lên những người khác)- Tham số dòng lệnh
JAVA_TOOL_OPTIONS
(bị ghi đè bởi những người khác)
- Chúng được nhặt bởi ít nhất
Những gì tôi muốn biết
- Có tài liệu chính thức nào so sánh không
JAVA_TOOL_OPTIONS
và_JAVA_OPTIONS
- Có sự khác biệt nào khác giữa
JAVA_TOOL_OPTIONS
và_JAVA_OPTIONS
(ngoại trừ từ quyền ưu tiên). - Những tập tin thực thi nào nhận
JAVA_TOOL_OPTIONS
và_JAVA_OPTIONS
(ngoàijava
vàjavac
) - Bất kỳ giới hạn về những gì có thể được bao gồm trên
JAVA_TOOL_OPTIONS
và_JAVA_OPTIONS
Tài liệu chính thức
Tôi đã không thể tìm thấy bất kỳ tài liệu về _JAVA_OPTIONS
. Các tài liệu choJAVA_TOOL_OPTIONS
không làm sáng tỏ sự khác biệt:
Do dòng lệnh không thể luôn luôn được truy cập hoặc sửa đổi, ví dụ như trong các máy ảo nhúng hoặc đơn giản là các máy ảo được khởi chạy sâu bên trong các tập lệnh, một biến JAVA_TOOL_OPTIONS được cung cấp để các tác nhân có thể được khởi chạy trong các trường hợp này.
...
Kịch bản ví dụ
Đây là mã tôi đã sử dụng để tìm ra điều này. Đầu ra giao diện điều khiển được bao gồm dưới dạng nhận xét:
export JAVA_OPTS=foobar
export JAVA_TOOL_OPTIONS=
export _JAVA_OPTIONS="-Xmx512m -Xms64m"
java -version
# Picked up JAVA_TOOL_OPTIONS:
# Picked up _JAVA_OPTIONS: -Xmx512m -Xms64m
# java version "1.7.0_40"
OpenJDK Runtime Environment (IcedTea 2.4.1) (suse-3.41.1-x86_64)
OpenJDK 64-Bit Server VM (build 24.0-b50, mixed mode)
javac -version
# Picked up JAVA_TOOL_OPTIONS:
# Picked up _JAVA_OPTIONS: -Xmx512m -Xms64m
# javac 1.7.0_40
export JAVA_TOOL_OPTIONS="-Xmx1 -Xms1"
export _JAVA_OPTIONS="-Xmx512m -Xms64m"
javac -version
# Picked up JAVA_TOOL_OPTIONS: -Xmx1 -Xms1
# Picked up _JAVA_OPTIONS: -Xmx512m -Xms64m
# javac 1.7.0_40
export JAVA_TOOL_OPTIONS="-Xmx512m -Xms64m"
export _JAVA_OPTIONS="-Xmx1 -Xms1"
javac -version
# Picked up JAVA_TOOL_OPTIONS: -Xmx512m -Xms64m
# Picked up _JAVA_OPTIONS: -Xmx1 -Xms1
# Error occurred during initialization of VM
# Too small initial heap
export JAVA_TOOL_OPTIONS="-Xmx1 -Xms1"
export _JAVA_OPTIONS=
java -Xmx512m -Xms64m -version
# Picked up JAVA_TOOL_OPTIONS: -Xmx1 -Xms1
# Picked up _JAVA_OPTIONS:
# java version "1.7.0_40"
# OpenJDK Runtime Environment (IcedTea 2.4.1) (suse-3.41.1-x86_64)
# OpenJDK 64-Bit Server VM (build 24.0-b50, mixed mode)
export JAVA_TOOL_OPTIONS=
export _JAVA_OPTIONS="-Xmx1 -Xms1"
java -Xmx512m -Xms64m -version
# Picked up JAVA_TOOL_OPTIONS:
# Picked up _JAVA_OPTIONS: -Xmx1 -Xms1
# Error occurred during initialization of VM
# Too small initial heap
JDK_JAVA_OPTIONS
sự thay thế ưa thích, hãy xem stackoverflow.com/q/52986487/537554