Cetak Semua Bendera JVM

97

Menemukan JVM Flag yang menarik:

java -XX:+UnlockDiagnosticVMOptions -XX:+PrintFlagsFinal -version

Ini mencetak ratusan pilihan yang berbeda, saya tidak pernah mendengarnya sebelumnya. Ini juga mencetak nilai default, yang membantu mendiagnosis perilaku JVM dengan lebih baik. Bendera menarik lainnya adalah:

-XX:+UnlockExperimentalVMOptions

Apakah ada yang tahu tentang dokumentasi yang menjelaskan masing-masingnya?

Sachin Bhansali
sumber
Alasan mengapa baris perintah tidak tercantum dalam dokumentasi adalah, karena seperti yang disebutkan namanya ada untuk mendiagnosis VM. Dapat diasumsikan bahwa orang yang men-debug hotspot mungkin mengenal mereka;)
Voo
1
tautan ini menjelaskan opsi-opsi ini secara singkat dan cukup baik.
saktiw

Jawaban:

35

Jangan lewatkan juga -XX:+JVMCIPrintPropertiesuntuk pilihan Graal JIT.

Sebelum menyelami sumber, Anda dapat membaca sekilas ekstrak berikut dan menemukan opsi yang cocok lebih cepat:

https://chriswhocodes.com/ (OracleJDK 6/7/8/9/10/11/12, OpenJDK 8/9/10/11, Graal CE / EE, OpenJ9, Zing)

http://jvm-options.tech.xebia.fr/

http://www.pingtimeout.fr/2012/05/jvm-options-complete-reference.html

http://stas-blogspot.blogspot.com/2011/07/most-complete-list-of-xx-options-for.html

Andriy Plokhotnyuk
sumber
15

Dokumentasi terbaik yang saya temukan adalah sumbernya .

Saya telah menggunakan SO Q&A ini untuk membuat build debug. Dengan build debug ini, Anda dapat menjalankan java -XX:+AggressiveOpts -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+PrintFlagsFinal -XX:+PrintFlagsWithComments -version.

Dari direktori dengan sumber, Anda dapat mengeksekusi (dengan asumsi Anda menggunakan Linux, Cygwin atau sejenisnya):

grep -FR 'UnlockExperimentalVMOptions' hotspot/

Atau, berikut ini (yang hanya melihat *.cppdan *.hppfile):

find hotspot/ -name '*.[ch]pp' -exec grep -F 'UnlockExperimentalVMOptions' {} +

Kemudian lihat file sumbernya. Mungkin alasan terbaik mengapa tidak ada satu dokumen pun yang menjelaskan semua opsi adalah bahwa beberapa dari opsi ini lebih baik diserahkan kepada mereka yang benar-benar memahami JVM dan cara terbaik untuk melakukannya adalah menjadi akrab dengan kode sumber.

Jadi, dalam kata-kata (hampir) dari besar guru , use the source!

Dan Cruz
sumber
1
Sumbernya adalah dokumentasi sempurna definisi program. Lihat juga codinghorror.com/blog/2012/04/…
Pyrolistic
@Pyrolistik Terima kasih untuk tautannya; membaca dengan baik dan saya tidak tahu Jeff Atwood baru-baru ini menulis blog tentang read the source.
Dan Cruz