Bagaimana cara memberikan argumen JVM ke VisualVM?


97

Saya menggunakan VisualVM dari JDK 1.6.0_26 untuk membuat profil aplikasi web Java yang berjalan di bawah Tomcat, tetapi VisualVM sering memberi tahu saya bahwa ia tidak memiliki cukup memori untuk mengambil snapshot, dan menggunakan sakelar -Xmx untuk memberikan lebih banyak memori ke Netbeans . Masalahnya adalah, saya menjalankan VisualVM di luar Netbeans, jadi bagaimana cara memberikan argumen JVM ke jvisualvm.exe?

Jawaban:


139

Harus dapat mengubah pengaturan memori di %JDK_HOME%\lib\visualvm\etc\visualvm.conf

Xmsdan Xmxberada di default_optionsantrean.


2
Pada (salinan saya :) OSX: /System/Library/Java/Support/VisualVM.bundle/Contents/Home/etc/visualvm.conf
Jonas N

@Zack Dapatkah Anda mengonfirmasi -J-Xmsdan -J-Xmxsebenarnya adalah nama opsi yang benar? Apakah -Jawalan diperlukan saat ini ditentukan di file conf?
GreenGiant

@GreenGiant Saya tidak yakin apakah mereka ada atau tidak ... Dalam salinan visualvm.conf saya, saya memiliki -J-Xms24m& -J-Xmx256mjadi saya berasumsi bahwa itu adalah nama opsi yang benar. Anda mungkin bisa google bagaimana memformat visualvm.conf untuk info lebih lanjut ...
Zack Macomber

@Zack file conf saya juga sama. Hanya ingin mengonfirmasi karena jawaban Anda tidak menyertakan -Jawalan.
GreenGiant

FYI, di Linux (Mint, mungkin Ubuntu juga) itu /usr/lib/jvm/java-6-sun/lib/visualvm/etc/visualvm.conf.
David Moles

53

atau menurut saya ini juga berfungsi:

jvisualvm.exe -J-Xmx512m (atau berapa pun jumlah yang Anda butuhkan)

-J pada baris perintah .exe untuk pengaturan sekali pakai, atau file .conf yang dicatat di jawaban lain untuk mengubah default


Saya tidak bisa mendapatkan ini untuk bekerja. Saya mencoba jvisualvm.exe -J-Xms256m -J-Xmx1024mdari command prompt, dan ketika memeriksa prosesnya, saya dapat melihat bahwa argumen tidak diterapkan.
Mike Partridge

3
Saya baru saja mencobanya dan tampaknya menambahkannya. Jadi saya melihat 192m default dan juga entri lain untuk 1024m. Sepertinya yang terakhir diutamakan. Versi JDK apa?
Kevin Welker

Saya menggunakan 1.6.0_26. Saat menggunakan JConsole untuk memeriksa proses VisualVM, bagian argumen VM di tab Ringkasan VM menampilkan default dan nilai yang saya berikan, tetapi saat menggunakan VisualVM untuk memeriksa dirinya sendiri, di Ringkasan> argumen JVM, bagian tersebut hanya melaporkan default.
Mike Partridge

Saya menggunakan 1.6.0_20, dan saya melihat 2 baris yang mencantumkan Xmx. Yang pertama adalah default, dan yang terakhir adalah nilai baru. Saya menyalin baris perintah Anda langsung dari komentar Anda di atas hanya untuk memastikan. Output dalam Tinjauan> JVM meliputi:-Xms24m -Xmx192m -Dsun.jvmstat.perdata.syncWaitMs=10000 -Xms256m -Xmx1024m
Kevin Welker

31

Saya mulai dengan

jvisualvm -J-Xms1024m -J-Xmx2048m

dan itu berhasil.


Saya suka ini karena lokasi file .conf telah berubah tetapi ini masih berfungsi dan mungkin akan berfungsi setidaknya untuk beberapa program Java lainnya, Bertentangan dengan komentar di atas, ini tidak sulit ditemukan untuk pengguna Mac. Dunia menggunakan Google yang membawa kita ke sini.
George Co

Seperti dicatat dalam komentar di bawah, di dalam jvisualvm ketika Anda melihat VM args, tampaknya itu tidak berfungsi tetapi berfungsi. Saya tidak lagi mendapatkan kesalahan OOM.
George Co

23

Di mac, Anda dapat mengkonfigurasinya dengan mengedit file ini.

/Applications/VisualVM.app/Contents/Resources/visualvm/etc/visualvm.conf

visualvm_default_options="-J-client -J-Xms4096m -J-Xmx5120m -J-XX:+IgnoreUnrecognizedVMOptions -J-Dnetbeans.accept_license_class=com.sun.tools.visualvm.modules.startup.AcceptLicense -J-Dsun.jvmstat.perdata.syncWaitMs=10000 -J-Dsun.java2d.noddraw=true"

Harap tetap fokus pada jawaban Anda pada solusinya . Jika Anda ingin menambahkan meta-informasi, silakan lakukan di komentar.
Martijn Pieters

Dan dengan jendela bertanda pertanyaan , jawaban Anda akan sulit ditemukan bagi pengguna Mac. Pertimbangkan membuatnya menjadi pertanyaan baru pula .
Martijn Pieters

Saya tidak memberikan suara pada posting ini, tolong jangan langsung menyimpulkan.
Martijn Pieters

Mengapa Anda melakukan pengeditan yang tidak perlu pada jawaban ini? Untuk mendapatkan lebih banyak reputasi? Jawabannya sudah terfokus dan sangat jelas . BTW, dengan setiap hasil edit Anda, saya mendapat peringkat turun!
aspdeepak

2
Saya telah membuat satu edit di sini, dan menjelaskan mengapa saya melakukannya. Jika Anda ingin bersikeras menambahkan jawaban khusus Mac untuk pertanyaan yang ditujukan bagi pengguna Windows dengan tag, tidak apa-apa, tetapi jangan memasukkan info meta; posting Anda harus berisi solusi saja, bukan saran voting.
Martijn Pieters

2

Untuk Mac OSX 10.12+

Jika Anda telah mendownload visualvm dmgdari https://visualvm.github.io/download.html dan telah memindahkannya ke Applicationsdirektori. Anda dapat menemukan file konfigurasi di visualvm.confbawah lokasi Applications/VisualVM.app/Contents/etc/visualvm.conf. Di file konfigurasi ini, Anda dapat mengubah

visualvm_default_options="-J-client -J-Xms24m -J-Xmx256m

untuk (mis.)

visualvm_default_options="-J-client -J-Xms24m -J-Xmx2048m


di Mac saya /Applications/VisualVM.app/Contents/Resources/visualvm/etc/visualvm.conf
Kranach
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.