Saya pikir akan lebih baik memiliki perbandingan antara _JAVA_OPTIONS
dan JAVA_TOOL_OPTIONS
. Saya telah mencari sedikit untuk satu, tetapi saya tidak dapat menemukan apa pun, jadi saya berharap kita dapat menemukan pengetahuan di sini di Stackoverflow.
JAVA_OPTS
termasuk untuk kelengkapan. Ini bukan bagian dari JVM, tetapi ada banyak pertanyaan tentang itu di alam liar.
Apa yang saya tahu:
Sejauh ini saya telah mengetahui bahwa:
JAVA_OPTS
tidak digunakan oleh JDK, tetapi oleh sekelompok aplikasi lain (lihat posting ini ).JAVA_TOOL_OPTIONS
dan_JAVA_OPTIONS
merupakan cara untuk menentukan argumen JVM sebagai variabel lingkungan alih-alih parameter baris perintah.- Paling tidak dijemput oleh
java
danjavac
- Mereka memiliki presedensi ini:
_JAVA_OPTIONS
(menimpa yang lain)- Parameter baris perintah
JAVA_TOOL_OPTIONS
(ditimpa oleh yang lain)
- Paling tidak dijemput oleh
Apa yang ingin saya ketahui
- Apakah ada dokumentasi resmi yang membandingkan
JAVA_TOOL_OPTIONS
dan_JAVA_OPTIONS
- Apakah ada perbedaan lain antara
JAVA_TOOL_OPTIONS
dan_JAVA_OPTIONS
(kecuali dari yang diutamakan). - Yang dapat dieksekusi mengambil
JAVA_TOOL_OPTIONS
dan_JAVA_OPTIONS
(selainjava
danjavac
) - Setiap batasan pada apa yang dapat dimasukkan
JAVA_TOOL_OPTIONS
dan_JAVA_OPTIONS
Dokumentasi Resmi
Saya belum dapat menemukan dokumentasi tentang _JAVA_OPTIONS
. Dokumentasi untukJAVA_TOOL_OPTIONS
tidak menjelaskan banyak perbedaan:
Karena baris perintah tidak selalu dapat diakses atau dimodifikasi, misalnya dalam VM tertanam atau hanya VM diluncurkan jauh di dalam skrip, variabel JAVA_TOOL_OPTIONS disediakan sehingga agen dapat diluncurkan dalam kasus ini.
...
Contoh skrip
Ini adalah kode yang saya gunakan untuk mencari tahu. Output konsol disertakan sebagai komentar:
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
sebagai pengganti yang disukai, lihat stackoverflow.com/q/52986487/537554