Como forneço argumentos JVM para VisualVM?

97

Estou usando o VisualVM do JDK 1.6.0_26 para criar o perfil de um webapp Java em execução no Tomcat, mas o VisualVM costuma me dizer que não tem memória suficiente para tirar um instantâneo e usar a opção -Xmx para fornecer mais memória ao Netbeans . O problema é que estou executando o VisualVM fora do Netbeans, então, como posso fornecer argumentos JVM para jvisualvm.exe?

Mike Partridge
fonte

Respostas:

139

Deve ser capaz de modificar as configurações de memória em %JDK_HOME%\lib\visualvm\etc\visualvm.conf

Xmse Xmxestão na default_optionslinha.

Zack Macomber
fonte
2
Em (minha cópia de :) OSX: /System/Library/Java/Support/VisualVM.bundle/Contents/Home/etc/visualvm.conf
Jonas N
@Zack Pode confirmar que -J-Xmse -J-Xmxsão realmente os nomes de opções corretas? O -Jprefixo é necessário quando eles são especificados no arquivo conf?
GreenGiant
@GreenGiant Não tenho certeza se eles são ou não ... Em minha cópia do visualvm.conf, eu tenho -J-Xms24me, -J-Xmx256mportanto, presumo que sejam os nomes de opção corretos. Você provavelmente poderia pesquisar no Google como formatar visualvm.conf para mais informações ...
Zack Macomber
@Zack meu arquivo conf é o mesmo também. Só queria confirmar, pois sua resposta não incluiu o -Jprefixo.
GreenGiant
Para sua informação, no Linux (Mint, presumivelmente Ubuntu também) é /usr/lib/jvm/java-6-sun/lib/visualvm/etc/visualvm.conf.
David Moles
53

ou acho que isso também funciona:

jvisualvm.exe -J-Xmx512m (ou o valor que você precisar)

-J na linha de comando .exe para configurações únicas ou o arquivo .conf anotado na outra resposta para alterar os padrões

Kevin Welker
fonte
Eu não consegui fazer isso funcionar. Tentei jvisualvm.exe -J-Xms256m -J-Xmx1024mno prompt de comando e, ao inspecionar o processo, pude ver que os argumentos não foram aplicados.
Mike Partridge
3
Acabei de experimentar e parece que o anexa. Estou vendo o padrão 192m e também outra entrada para 1024m. Parece que o último tem precedência. Qual versão do JDK?
Kevin Welker
Estou usando 1.6.0_26. Ao usar o JConsole para inspecionar o processo VisualVM, a seção de argumentos da VM na guia Resumo da VM mostra os padrões e os valores que forneci, mas ao usar o VisualVM para se inspecionar, em Visão geral> Argumentos da JVM ele relata apenas os padrões.
Mike Partridge
Estou usando 1.6.0_20 e vejo 2 linhas que listam o Xmx. O primeiro é o padrão e o último é o novo valor. Copiei sua linha de comando diretamente do seu comentário acima, apenas para ter certeza. A saída em Visão geral> JVM inclui:-Xms24m -Xmx192m -Dsun.jvmstat.perdata.syncWaitMs=10000 -Xms256m -Xmx1024m
Kevin Welker
31

Eu comecei com

jvisualvm -J-Xms1024m -J-Xmx2048m

e funcionou.

Prabhat Jha
fonte
Eu gosto disso porque a localização do arquivo .conf mudou, mas ainda funciona e provavelmente funcionaria para pelo menos alguns outros programas Java. Ao contrário dos comentários acima, isso não é difícil de encontrar para usuários Mac. O mundo usa o Google que nos traz aqui.
George Co
Conforme observado nos comentários abaixo, dentro do jvisualvm, quando você olha para os args da VM, parece que não está funcionando, mas está. Não recebo mais um erro OOM.
George Co
22

No mac, você pode configurá-los editando este arquivo.

/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
fonte
Por favor, mantenha sua resposta focada na solução . Se você quiser adicionar meta-informações, faça-o em um comentário.
Martijn Pieters
E com as janelas marcadas com perguntas , será difícil encontrar sua resposta para usuários de Mac. Considere fazer uma nova pergunta de qualquer maneira .
Martijn Pieters
Eu não votei neste post, por favor, não tire conclusões precipitadas.
Martijn Pieters
Por que você faria uma edição desnecessária para esta resposta? Para ganhar mais algumas reputações? A resposta já estava focada e cristalina . BTW, com cada uma das suas edições, estou tendo uma classificação negativa!
aspdeepak
2
Fiz uma edição aqui e deixei claro por que fiz isso. Se você quiser insistir em adicionar uma resposta exclusiva para Mac a uma pergunta dirigida a usuários do Windows por meio de tags, tudo bem, mas mantenha as meta informações fora disso; sua postagem deve conter apenas uma solução, não conselhos de voto.
Martijn Pieters
0

Para Mac OSX 10.12+

Se você baixou o visualvm dmgde https://visualvm.github.io/download.html e o moveu para o Applicationsdiretório. Você pode encontrar o arquivo de configuração visualvm.confno local Applications/VisualVM.app/Contents/etc/visualvm.conf. Neste arquivo de configuração, você pode alterar o

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

para (por exemplo)

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

Hardik Modha
fonte