it-swarm-pt.tech

Como posso impedir que o Java crie arquivos hsperfdata?

Estou escrevendo um aplicativo Java que roda em Linux (usando o JDK da Sun). Ele continua criando /tmp/hsperfdata_username diretórios que eu gostaria de impedir. Existe alguma maneira de impedir Java de criar esses arquivos?

44
c-had

Tente a opção JVM - XX: -UsePerfData

mais informações

O seguinte pode ser útil, que é do link https://docs.Oracle.com/javase/8/docs/technotes/tools/unix/Java.html

-XX:+UsePerfData

    Enables the perfdata feature. This option is enabled by default
    to allow JVM monitoring and performance testing. Disabling it 
    suppresses the creation of the hsperfdata_userid directories. 
    To disable the perfdata feature, specify -XX:-UsePerfData.
32
Kyle Renfro

Use a opção JVM -XX:-UsePerfData.

Isso não terá um efeito negativo no desempenho, como dizem outras respostas.

Por padrão, a instrumentação jvmstat está ativada na JVM do HotSpot. A opção JVM -XX:-UsePerfData desliga. Especificamente, especularia, desligar a instrumentação melhoraria o desempenho (uma quantidade trivial).

Portanto, a desvantagem de desativar a instrumentação jvmstat é que você perde as informações de monitoramento de desempenho.

jvmstat é descrito aqui http://Java.Sun.com/performance/jvmstat/

Aqui está um tópico com alguém que está preocupado que, ativando jvmstat - com a opção -XX:+UsePerfData - prejudicará o desempenho. http://www.theserverside.com/discussions/thread.tss?thread_id=338
(Provavelmente não, pois o jvmstat foi projetado para estar "'sempre ativo', mas com um impacto insignificante no desempenho".)

31
Jon Stafford

Em vez de desativá-lo, altere o local Java.io.tmpdir. Adicione -Djava.io.tmpdir =/mydir/algures/else/ao seu Java comando de inicialização e, em seguida, o arquivo estará em algum lugar que você controla.


Observe um comentário de @simonc: isso funciona apenas em algumas versões da JVM e não é mais suportado. Consulte http://bugs.Sun.com/view_bug.do?bug_id=6447182 , http://bugs.Sun.com/view_bug.do?bug_id=6938627 , http://bugs.Sun.com/view_bug.do?bug_id=7009828 para obter mais informações.

4
Mack

Como um adendo à resposta de Mack (respondida em 25/03/11 às 17:12), a opção Java.tmp.dir não está mais disponível desde Java 8. Veja as informações em: https://bugs.Java.com/view_bug.do?bug_id=8189674 ==

Portanto, desativar a opção usando -XX: -UsePerfData parece a única opção para não ter arquivos hsperfdata_ *.

1
user6494409

Há também "-XX:+PerfDisableSharedMem" opção (recomendada pela Sun), que deve causar menos problemas de desempenho que o uso de "-XX:-UsePerfData" opção.

1
Zweiberg

EDITAR: Informações de limpeza e resumir

Resumo:

  • É uma característica, não um bug
  • Pode ser desativado com -XX: -UsePerfData, o que pode prejudicar o desempenho

Informações relevantes:

1
svrist

No link do svrist:

O primeiro item em http://Java.Sun.com/performance/jvmstat/faq.html menciona uma opção que você pode desativar para desativar todo o conjunto de recursos: -XX: -UsePerfData.

1
Stu Thompson

De acordo com o relatório de bug arquivado existe uma solução alternativa:

Esta opção não documentada desativará o recurso perfdata:
- XX: -UsePerfData

Vale ressaltar que é um recurso, não um bug. A solução acima apenas desativa o recurso.

1
SCdF