Saya perlu memeriksa apakah beberapa opsi yang dapat diteruskan ke JVM secara eksplisit diatur atau memiliki nilai default.
Untuk lebih spesifik: Saya perlu membuat satu utas khusus dengan ukuran tumpukan asli lebih tinggi daripada yang standar, tetapi jika pengguna ingin mengurus hal-hal seperti itu sendiri dengan menentukan -Xss
opsi saya ingin membuat semua utas dengan ukuran tumpukan default (yang akan ditentukan oleh pengguna dalam opsi -Xss).
Saya sudah memeriksa kelas suka java.lang.System
dan java.lang.Runtime
, tetapi ini tidak memberi saya informasi yang berguna tentang argumen VM.
Apakah ada cara untuk mendapatkan informasi yang saya butuhkan?
java
jvm
jvm-arguments
okutane
sumber
sumber
final StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
final String mainClassName = stackTrace[stackTrace.length - 1].getClassName());
sun.java.command
properti sistem; Saya mengatakan bahwa properti dapat digunakan untuk memperoleh nama kelas utama (meskipun saya tidak menyebutkan, seperti yang ditunjukkan @laz, bahwa properti hanya ada pada JVM Oracle).Saat startup, lewati ini
-Dname=value
dan kemudian dalam kode Anda, Anda harus menggunakan
untuk mendapatkan nilai itu
sumber
-Dname=value
adalah argumen JVM dan tidak ada perbedaan intrinsik dengan-X
argumen. Sebenarnya, keduanya dilewatkan ke java dan bukan aplikasi di baris perintah dan sebagai bukti dengan contoh, di maven Anda dapat melewati keduanya-Drun.jvmArguments=...
. Saya percaya itu adalah alasan mengapa hal itu dibatalkan.Saya menemukan bahwa HotSpot mencantumkan semua argumen VM di kacang manajemen kecuali untuk -client dan -server. Jadi, jika Anda menyimpulkan argumen -client / -server dari nama VM dan menambahkan ini ke daftar kacang manajemen runtime, Anda mendapatkan daftar lengkap argumen.
Inilah SSCCE:
Dapat dibuat lebih pendek jika Anda ingin argumen dalam
List<String>
.Catatan akhir: Kami mungkin juga ingin memperluas ini untuk menangani kasus langka memiliki spasi dalam argumen baris perintah.
sumber
Saya belum mencoba secara khusus mendapatkan pengaturan VM, tetapi ada banyak informasi dalam utilitas JMX khususnya utilitas MXBean. Di sinilah saya akan mulai. Semoga Anda menemukan sesuatu di sana untuk membantu Anda.
Situs web sun memiliki banyak teknologi:
http://java.sun.com/javase/6/docs/technotes/guides/management/mxbeans.html
sumber
Jika Anda ingin seluruh baris perintah dari proses java Anda, Anda dapat menggunakan: JvmArguments.java (menggunakan kombinasi JNA + / proc untuk mencakup sebagian besar implementasi unix)
sumber