ฉันจะให้อาร์กิวเมนต์ JVM แก่ VisualVM ได้อย่างไร


97

ฉันใช้ VisualVM จาก JDK 1.6.0_26 เพื่อสร้างโปรไฟล์เว็บแอป Java ที่ทำงานภายใต้ Tomcat แต่ VisualVM มักบอกฉันว่ามีหน่วยความจำไม่เพียงพอที่จะถ่ายภาพรวมและใช้สวิตช์ -Xmx เพื่อเพิ่มหน่วยความจำให้กับ Netbeans . ปัญหาคือฉันใช้ VisualVM นอก Netbeans ดังนั้นฉันจะให้อาร์กิวเมนต์ JVM กับ jvisualvm.exe ได้อย่างไร

คำตอบ:


141

ควรจะสามารถแก้ไขการตั้งค่าหน่วยความจำใน %JDK_HOME%\lib\visualvm\etc\visualvm.conf

XmsและXmxอยู่ในdefault_optionsแนวเดียวกัน


2
เปิด (สำเนาของฉัน :) OSX: /System/Library/Java/Support/VisualVM.bundle/Contents/Home/etc/visualvm.conf
Jonas N

@ แซ็คคุณสามารถยืนยันได้หรือไม่-J-Xmsและ-J-Xmxเป็นชื่อตัวเลือกที่ถูกต้อง เป็น-Jคำนำหน้าจำเป็นเมื่อเหล่านี้จะถูกระบุไว้ในแฟ้ม conf หรือไม่
GreenGiant

@GreenGiant ฉันไม่แน่ใจว่าเป็นหรือไม่ ... ในสำเนา visualvm.conf ของฉันฉันมี-J-Xms24mและ-J-Xmx256mคิดว่าเป็นชื่อตัวเลือกที่ถูกต้อง คุณอาจใช้ Google วิธีจัดรูปแบบ visualvm.conf สำหรับข้อมูลเพิ่มเติม ...
Zack Macomber

@Zack ไฟล์ conf ของฉันก็เหมือนกัน แค่อยากจะยืนยันเนื่องจากคำตอบของคุณไม่มี-Jคำนำหน้า
GreenGiant

FYI บนลินุกซ์ (มิ้นท์สันนิษฐาน Ubuntu เช่นกัน) /usr/lib/jvm/java-6-sun/lib/visualvm/etc/visualvm.confก็
David Moles

54

หรือฉันคิดว่ามันได้ผลเช่นกัน:

jvisualvm.exe -J-Xmx512m (หรือจำนวนเท่าใดก็ได้ที่คุณต้องการ)

-J บนบรรทัดคำสั่ง. exe สำหรับการตั้งค่าครั้งเดียวหรือไฟล์. conf ที่ระบุไว้ในคำตอบอื่นสำหรับการเปลี่ยนค่าเริ่มต้น


ฉันไม่สามารถทำงานนี้ได้ ฉันลองjvisualvm.exe -J-Xms256m -J-Xmx1024mจากพรอมต์คำสั่งและเมื่อตรวจสอบกระบวนการฉันเห็นว่าไม่มีการใช้อาร์กิวเมนต์
Mike Partridge

3
ฉันเพิ่งลองและดูเหมือนว่าจะต่อท้าย ดังนั้นฉันเห็น 192m เริ่มต้นและยังมีรายการสำหรับ 1024M อื่น ดูเหมือนว่าอย่างหลังจะมีความสำคัญกว่า JDK รุ่นอะไร?
Kevin Welker

ฉันใช้ 1.6.0_26 เมื่อใช้ JConsole ตรวจสอบกระบวนการ VisualVM ส่วนอาร์กิวเมนต์ VM บนแท็บสรุป VM จะแสดงค่าเริ่มต้นและค่าที่ฉันระบุ แต่เมื่อใช้ VisualVM เพื่อตรวจสอบตัวเองในภาพรวม> อาร์กิวเมนต์ JVM จะรายงานเฉพาะค่าเริ่มต้น
Mike Partridge

ฉันใช้ 1.6.0_20 และฉันเห็น 2 บรรทัดที่แสดงรายการ Xmx ค่าแรกคือค่าเริ่มต้นและค่าหลังคือค่าใหม่ ฉันคัดลอกบรรทัดคำสั่งของคุณโดยตรงจากความคิดเห็นของคุณด้านบนเพื่อให้แน่ใจ ผลลัพธ์ในภาพรวม> JVM ประกอบด้วย:-Xms24m -Xmx192m -Dsun.jvmstat.perdata.syncWaitMs=10000 -Xms256m -Xmx1024m
Kevin Welker

32

ฉันเริ่มต้นด้วย

jvisualvm -J-Xms1024m -J-Xmx2048m

และมันได้ผล


ฉันชอบสิ่งนี้เพราะตำแหน่งของไฟล์. conf เปลี่ยนไป แต่ยังใช้งานได้และน่าจะใช้ได้กับโปรแกรม Java อื่น ๆ อย่างน้อยตรงกันข้ามกับความคิดเห็นข้างต้นสิ่งนี้ไม่ยากที่จะหาสำหรับผู้ใช้ Mac โลกใช้ Google ซึ่งนำเรามาที่นี่
George Co

ดังที่ระบุไว้ในความคิดเห็นด้านล่างภายใน jvisualvm เมื่อคุณดูที่ VM args ดูเหมือนว่ามันจะไม่ทำงาน แต่ก็ทำได้ ฉันไม่ได้รับข้อผิดพลาด OOM อีกต่อไป
George Co

23

ใน Mac คุณสามารถกำหนดค่าได้โดยแก้ไขไฟล์นี้

/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"

โปรดให้คำตอบของคุณมุ่งเน้นไปที่การแก้ปัญหา หากคุณต้องการเพิ่มข้อมูลเมตาโปรดทำในความคิดเห็น
Martijn Pieters

และด้วยคำถามที่ติดแท็กหน้าต่างคำตอบของคุณจะหายากสำหรับผู้ใช้ Mac พิจารณาทำให้มันเป็นคำถามใหม่อยู่แล้ว
Martijn Pieters

ฉันไม่ได้ลงคะแนนในโพสต์นี้โปรดอย่าข้ามไปที่ข้อสรุป
Martijn Pieters

ทำไมคุณจึงทำการแก้ไขคำตอบนี้โดยไม่จำเป็น หากต้องการได้รับชื่อเสียงมากขึ้น? คำตอบนั้นมีสมาธิและชัดเจนอยู่แล้ว BTW กับการแก้ไขแต่ละครั้งของคุณฉันมีคะแนนลดลง!
aspdeepak

2
ฉันได้ทำการแก้ไขที่นี่หนึ่งครั้งและทำให้ชัดเจนว่าทำไมฉันถึงทำเช่นนั้น หากคุณต้องการยืนยันที่จะเพิ่มคำตอบเฉพาะสำหรับ Mac สำหรับคำถามที่มุ่งเป้าไปที่ผู้ใช้ Windows โดยใช้แท็กก็ไม่เป็นไร แต่อย่าเก็บข้อมูลเมตาไว้ โพสต์ของคุณควรมีวิธีแก้ปัญหาเท่านั้นไม่ใช่คำแนะนำในการโหวต
Martijn Pieters

2

สำหรับ Mac OSX 10.12+

หากคุณดาวน์โหลด visualvm dmgจากhttps://visualvm.github.io/download.htmlและย้ายไปยังApplicationsไดเร็กทอรี คุณสามารถค้นหาแฟ้มการกำหนดค่าภายใต้สถานที่visualvm.conf Applications/VisualVM.app/Contents/etc/visualvm.confในไฟล์กำหนดค่านี้คุณสามารถเปลี่ยนไฟล์

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

ถึง (เช่น)

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


บน Mac ของฉันมันคือ
/Applications/VisualVM.app/Contents/Resources/visualvm/etc/visualvm.conf
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.