Aviso da VM do servidor Java HotSpot (TM) de 64 bits: ignorando a opção MaxPermSize

133

Ao criar um projeto Java 8 com o Maven:

mvn clean package

Recebo esta mensagem:

Aviso da VM do servidor Java HotSpot (TM) de 64 bits: ignorando a opção MaxPermSize = 128m; suporte foi removido no 8.0

Como remover esta mensagem?

Boris
fonte
2
Veja bugs.java.com/bugdatabase/view_bug.do?bug_id=6964458 para obter uma descrição completa
Dag
1
Você já pode ter uma instância do IDEA em execução. [1]: stackoverflow.com/a/20553943/3741698
David Hackro 22/06/2015

Respostas:

163

O Guia de Compatibilidade para JDK 8 diz que no Java 8 o sinalizador da linha de comandos MaxPermSizefoi removido. O motivo é que a geração permanente foi removida do heap do hotspot e foi movida para a memória nativa. Portanto, para remover esta mensagem, edite a variável de usuário do ambiente MAVEN_OPTS :

Java 7

MAVEN_OPTS -Xmx512m -XX:MaxPermSize=128m

Java 8

MAVEN_OPTS -Xmx512m
Boris
fonte
13
E o motivo é que todo o espaço da PermGen foi removido no JRE 8 da Oracle, AFAIK.
Puce
1
Se alguém não souber como fazer isso - sudo gedit ~/.profile, adicione a linha da resposta e salve o arquivo.
gotqn
Eu tenho essa opção definida em ~ / .bashrc
paka
@gotqn Por que você sudoeditaria um arquivo na sua pasta pessoal? Parece uma prática muito estranha para mim.
Per Lundberg
22

O JDK 8 HotSpot JVM agora está usando memória nativa para a representação dos metadados da classe e é chamado Metaspace .

A geração permanente foi removida. O PermSizee MaxPermSizesão ignorados e um aviso é emitido se estiverem presentes na linha de comando.

Martin Seeler
fonte
Isso responde indiretamente à pergunta ... A resposta é "remova os sinalizadores para remover o aviso". Como o comentário perspicaz de @ ohad-schneider revela, não há um único substituto para eles.
conny
10
-XX:MaxPermSize=size

Define o tamanho máximo do espaço de geração permanente (em bytes). Esta opção foi descontinuada no JDK 8 e substituída pela -XX:MaxMetaspaceSizeopção.

-XX:PermSize=size

Define o espaço (em bytes) alocado para a geração permanente que aciona uma coleta de lixo se for excedida. Esta opção foi descontinuada no JDK 8 e substituída pela -XX:MetaspaceSizeopção.

mama ...
fonte
12
Eu acho que isso foi downvoted porque implica que você deve mudar os usos anteriores do MaxPermGencom MaxMetaSpaceSizeo que é enganosa, uma vez que seus papéis têm praticamente revertida. Antes, o espaço de metadados da classe Java 8 residia no PermGen, que era limitado por 32 / 64MB e MaxPerGenera usado para aumentá- lo. No entanto, a partir do Java 8, o PermGen não existe mais e o espaço de metadados da classe é ilimitado; portanto, o MaxMetaspacetamanho é realmente usado para diminuí- lo. Para obter mais informações, consulte: stackoverflow.com/a/31463972/67824
Ohad Schneider
8

No JBoss EAP 6.4, clique com o botão direito do mouse no servidor e abra a configuração de inicialização sob o argumento VM que você encontrará

{-Dprogram.name=JBossTools: jboss-eap" -server -Xms1024m -Xmx1024m -XX:MaxPermSize=256m}

atualize para

{-Dprogram.name=JBossTools: JBoss 6.4" -server -Xms512m -Xmx512m}

Isto irá resolver o seu problema.

Amit
fonte
1

Recebi uma mensagem semelhante ao executar a linha de comando mvn (versão 3.3.3) no Linux com Java 8. Ao abrir o script maven / $ MAVEN-HOME / bin / mvn, localizei a seguinte linha

MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"

Onde $ MAVEN_PROJECTBASEDIR por padrão é o seu diretório inicial. Então, em dois lugares que você pode dar uma olhada, primeiro é o arquivo $ MAVEN_PROJECTBASEDIR / .mvn / jvm.config, se existir. Em segundo lugar, observe os arquivos que possivelmente configuram a variável de ambiente MAVEN_OPTS. Os arquivos candidatos são .bashrc, .bash_profile, .profile e os arquivos incluídos por eles, como / etc / profile, /etc/bash.bashrc

Eu localizei

export MAVEN_OPTS="-Xmx512m -XX:MaxPermSize=256m"

em .bashrc no meu sistema, altere-o para

export MAVEN_OPTS="-Xmx512m"

Problema resolvido

Jonathan L
fonte
1

caso alguém ainda receba esse tipo de mensagem. Isso acontece porque você adiciona o argumento da JVM ao executar o projeto maven. Por estar relacionado ao maven, você pode verificar seu pom.xmlarquivo no seu projeto.

encontrar esta linha <argLine>...</argLine>, no meu projeto eu também tenho argumento abaixo

<argLine>-Xmx1024m -XX:MaxPermSize=512m -XX:+TieredCompilation -XX:TieredStopAtLevel=1</argLine>

você deve substituir o MaxPermSizeargumento como -Xms123m -Xmx123m, uma vez que MaxPermSizejá está obsoleto e não afetará sua configuração da JVM:

<argLine>-Xms512m -Xmx512m  -XX:+TieredCompilation -XX:TieredStopAtLevel=1</argLine>
satrioaditya
fonte
-1

Por favor, para resolver este problema, apenas definimos o caminho JDK instalado no

standalone.conf

arquivo que está na pasta bin do JBoss \ Wildfly Server. Para resolver isso, execute as seguintes etapas:

  1. Abra o arquivo standlone.conf que, na pasta JBoss_or_wildfly \ bin
  2. Neste arquivo, encontre o texto #JAVA_HOME .
  3. Remova o caractere # e defina o caminho do JDK instalado como JAVA_HOME = "C: \ Arquivos de programas \ Java \ jdk1.8.0_65" Espero que isso resolva seu problema Obrigado
Salahin Rocky
fonte
O problema original está em um projeto final. Não tem nada a ver com o JBoss.
Boris
-5

Para usuários do Eclipse ...

Clique em Executar -> Configuração de Execução -> são -> configurar o JRE Alternativo para 1.6 ou 1.7

Raja Rajamani
fonte