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?

Mike Partridge
sumber

Jawaban:

139

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

Xmsdan Xmxberada di default_optionsantrean.

Zack Macomber
sumber
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

Kevin Welker
sumber
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.

Prabhat Jha
sumber
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"
aspdeepak.dll
sumber
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

Hardik Modha
sumber
di Mac saya /Applications/VisualVM.app/Contents/Resources/visualvm/etc/visualvm.conf
Kranach