Java 如何向VisualVM提供JVM参数?

Java 如何向VisualVM提供JVM参数?,java,windows,jvm,visualvm,Java,Windows,Jvm,Visualvm,我使用JDK1.6.026中的VisualVM来评测在Tomcat下运行的Java Web应用程序,但VisualVM经常告诉我,它没有足够的内存来拍摄快照,并使用-Xmx开关为Netbeans提供更多内存。问题是,我在Netbeans之外运行VisualVM,因此如何向jvisualvm.exe提供JVM参数?应该能够修改%JDK\u HOME%\lib\VisualVM\etc\VisualVM.conf ${VISUALVM}/etc/visualvm.conf Xms和Xmx在defa

我使用JDK1.6.026中的VisualVM来评测在Tomcat下运行的Java Web应用程序,但VisualVM经常告诉我,它没有足够的内存来拍摄快照,并使用-Xmx开关为Netbeans提供更多内存。问题是,我在Netbeans之外运行VisualVM,因此如何向jvisualvm.exe提供JVM参数?

应该能够修改
%JDK\u HOME%\lib\VisualVM\etc\VisualVM.conf

${VISUALVM}/etc/visualvm.conf

Xms
Xmx
default\u选项中。

或者我认为这也适用:

jvisualvm.exe-J-Xmx512m
(或您需要的任何金额)


-J在.exe命令行上进行一次性设置,或在mac中更改默认值的另一个答案中指出的.conf文件中,您可以通过编辑此文件来配置它们

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

jvisualvm -J-Xms1024m -J-Xmx2048m

它成功了。

更新:

根据@Kranach的评论。新路径是
/Applications/VisualVM.app/Contents/Resources/VisualVM/etc/VisualVM.conf
。在此配置文件中,您可以更改

visualvm_default_options=“-J-client-J-Xms24m-J-Xmx256m

到(例如)

visualvm_default_options=“-J-client-J-Xms24m-J-Xmx2048m

旧答案:适用于Mac OSX 10.12+

如果您已从下载visualvm
dmg
,并将其移动到
应用程序
目录。您可以在位置
Applications/visualvm.app/Contents/etc/visualvm.conf
下找到配置文件
visualvm.conf
。在此配置文件中,您可以更改

visualvm_default_options=“-J-client-J-Xms24m-J-Xmx256m

到(例如)


visualvm\u default\u options=“-J-client-J-Xms24m-J-Xmx2048m

在visualvm 2中,配置文件位于提取下载文件的visualvm目录中,位于
etc/visualvm.conf

${VISUALVM}/etc/visualvm.conf

我没法让它工作。我在命令提示符下尝试了
jvisualvm.exe-J-Xms256m-J-Xmx1024m
,在检查过程时,我发现没有应用参数。我只是尝试了一下,它似乎在追加参数。所以我看到了默认的192m,还有一个条目是1024m。看起来后者优先。什么版本的JDK?我使用的是1.6.0_26。当使用JConsole检查VisualVM进程时,VM Summary选项卡上的VM arguments部分显示默认值和我提供的值,但当使用VisualVM检查自身时,在Overview>JVM arguments中它只报告默认值。我使用的是1.6.020,我看到两行列出了Xmx。第一个是默认值,后一个是新值。我直接从上面的评论中复制了您的命令行,只是为了确定。JVM中的输出包括:
-Xms24m-Xmx192m-Dsun.jvmstat.perdata.syncWaitMs=10000-Xms256m-Xmx1024m
您能解释一下-J的含义吗?谢谢。关于(我的副本:)OSX:/System/Library/Java/Support/VisualVM.bundle/Contents/Home/etc/VisualVM。conf@Zack您能否确认
-J-Xms
-J-Xmx
实际上是正确的选项名称?当在conf文件中指定它们时,
-J
前缀是必需的吗?@GreenGiant我不确定它们是否是……在我的visualvm.conf副本中,我有
-J-Xms24m
&
-J-Xmx256m
,因此我假设这是正确的选项名称。你也许可以在谷歌上搜索如何格式化visualvm.conf以获取更多信息…@Zack我的conf文件也一样。我只是想确认一下,因为您的答案没有包含
-J
前缀.FYI,在Linux(Mint,大概也是Ubuntu)上,它是
/usr/lib/jvm/java-6-sun/lib/visualvm/etc/visualvm.conf
。请将您的答案集中在解决方案上。如果你想添加元信息,请在评论中添加。加上问题标签,Mac用户很难找到你的答案。无论如何,我认为这是一个新的问题。我没有在这个帖子上投票,请不要急于下结论。为什么你会对这个答案做不必要的编辑?为了获得更多的名声?答案已经非常明确。顺便说一句,你的每一次编辑我都被降级了!我在这里做了一次编辑,并清楚地说明了我为什么这么做。如果你想坚持用标签为针对Windows用户的问题添加一个Mac专用的答案,那没关系,但不要使用元数据信息;你的帖子应该只包含一个解决方案,而不是投票建议。我喜欢这样做,因为.conf文件的位置已经改变了,但这仍然有效,并且可能至少适用于其他一些Java程序,与上面的评论相反,这对于Mac用户来说并不难找到。世界使用谷歌,它把我们带到了这里。正如下面的评论所指出的,在jvisualvm内部,当你查看VM参数时,它似乎不起作用,但确实起作用了。我再也没有OOM错误了。你能解释一下-J是什么意思吗?谢谢这是很久以前的事了,我不记得我的消息来源了。但是,如果您查看本页上的所有其他答案,您会注意到,要添加到JVM运行时的jvisualvm的每个参数前面都有-J。这有点像一个转义序列,表示后面的参数不打算由jvisualvm本身处理,而是用来修改jvisualvm使用的JVM。在我的Mac上,它是/Applications/VisualVM.app/Contents/Resources/VisualVM/etc/VisualVM.confI可以证实Kranach的评论,这是新的路径。