Instalei o JDK 8 e estou tentando executar o Eclipse. Estou recebendo a seguinte mensagem de aviso:
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=512m;
support was removed in 8.0
Quais são os motivos para ignorar esta opção de VM?
Respostas:
Razões para ignorar esse argumento é que a geração permanente foi removida no HotSpot para JDK8 devido às seguintes desvantagens
O espaço de Geração Permanente (PermGen) foi completamente removido e é substituído por um novo espaço chamado Metaspace. As consequências da remoção do PermGen são que, obviamente, os argumentos da JVM PermSize e MaxPermSize são ignorados e você nunca receberá um erro java.lang.OutOfMemoryError: PermGen.
Vantagens do MetaSpace
Ajuste do Metaspace
O tamanho máximo do metasspace pode ser definido usando o sinalizador -XX: MaxMetaspaceSize, e o padrão é ilimitado, o que significa que apenas a memória do sistema é o limite. O sinalizador de ajuste -XX: MetaspaceSize define o tamanho inicial do metasspace Se você não especificar esse sinalizador, o Metaspace será redimensionado dinamicamente, dependendo da demanda do aplicativo em tempo de execução.
A mudança permite outras otimizações e recursos no futuro
Há um desempenho aprimorado do GC também. Mais detalhes
fonte
Esse é um dos novos recursos do Java 8, parte das JDK Enhancement Proposals 122 :
A lista de todos os JEPs que serão incluídos no Java 8 pode ser encontrada na página de marcos do JDK8 .
fonte
O espaço de geração permanente (PermGen) foi completamente removido e é substituído por um novo espaço chamado Metaspace. As consequências da remoção de PermGen são que, obviamente, os argumentos PermSize e MaxPermSize JVM são ignorados e você nunca receberá um
java.lang.OutOfMemoryError
erro: PermGen. O JDK 8 HotSpot JVM agora está usando memória nativa para a representação de metadados de classe e é chamado Metaspace. Leia mais >>fonte
Porque o espaço PermGen foi removido. O gerenciamento de memória mudou um pouco.
java-8-permgen-metaspace
fonte
O espaço PermGen é substituído pelo MetaSpace no Java 8. Os argumentos PermSize e MaxPermSize JVM são ignorados e um aviso é emitido se presente na inicialização.
A maioria das alocações para os metadados da classe agora está alocada na memória nativa. * As classes usadas para descrever os metadados da classe foram removidas.
A principal diferença entre o antigo PermGen e o novo MetaSpace é que você não precisa definir obrigatoriamente o limite superior do uso de memória. Você pode manter o limite de espaço do MetaSpace ilimitado. Portanto, quando o uso da memória aumentar, você não receberá o erro OutOfMemoryError. Em vez disso, a memória nativa reservada é aumentada para preencher completamente o aumento do uso da memória.
Você pode definir o limite máximo de espaço para o MetaSpace e, em seguida, ele lançará o espaço OutOfMemoryError: Metadata. Portanto, é importante definir esse limite com cautela, para evitar o desperdício de memória.
fonte
A implementação da JVM da Oracle para Java 8 se livrou do modelo PermGen e o substituiu pelo Metaspace .
fonte