J'ai installé JDK 8 et j'essaie d'exécuter Eclipse. Je reçois le message d'avertissement suivant:
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=512m;
support was removed in 8.0
Quelles sont les raisons d'ignorer cette option de machine virtuelle?
Réponses:
Les raisons d'ignorer ces arguments sont que la génération permanente a été supprimée dans HotSpot pour JDK8 en raison des inconvénients suivants
L'espace de génération permanente (PermGen) a été complètement supprimé et est en quelque sorte remplacé par un nouvel espace appelé Metaspace. Les conséquences de la suppression de PermGen sont qu'évidemment les arguments JVM PermSize et MaxPermSize sont ignorés et vous n'obtiendrez jamais d'erreur java.lang.OutOfMemoryError: PermGen.
Avantages de MetaSpace
Réglage de Metaspace
La taille maximale de la métaspace peut être définie à l'aide de l'indicateur -XX: MaxMetaspaceSize, et la valeur par défaut est illimitée, ce qui signifie que seule la mémoire de votre système est la limite. L'indicateur de réglage -XX: MetaspaceSize définit la taille initiale de métaspace Si vous ne spécifiez pas cet indicateur, Metaspace se redimensionnera dynamiquement en fonction de la demande de l'application au moment de l'exécution.
Le changement permet d'autres optimisations et fonctionnalités à l'avenir
Les performances du GC sont également améliorées. Plus de détails
la source
C'est l'une des nouvelles fonctionnalités de Java 8, qui fait partie des propositions d'amélioration JDK 122 :
La liste de tous les JEP qui seront inclus dans Java 8 se trouve sur la page des jalons JDK8 .
la source
L'espace de génération permanente (PermGen) a été complètement supprimé et est en quelque sorte remplacé par un nouvel espace appelé Metaspace. Les conséquences de la suppression de PermGen sont qu'évidemment les arguments JVM PermSize et MaxPermSize sont ignorés et vous n'obtiendrez jamais d'
java.lang.OutOfMemoryError
erreur: PermGen. La JVM JDK 8 HotSpot utilise maintenant la mémoire native pour la représentation des métadonnées de classe et s'appelle Metaspace. Lire la suite >>la source
Parce que l'espace PermGen a été supprimé. La gestion de la mémoire a un peu changé.
java-8-permgen-metaspace
la source
L'espace PermGen est remplacé par MetaSpace dans Java 8. Les arguments JVM PermSize et MaxPermSize sont ignorés et un avertissement est émis s'il est présent au démarrage.
La plupart des allocations pour les métadonnées de classe sont désormais allouées à partir de la mémoire native. * Les classes utilisées pour décrire les métadonnées de classe ont été supprimées.
La principale différence entre l'ancien PermGen et le nouveau MetaSpace est qu'il n'est pas obligatoire de définir une limite supérieure d'utilisation de la mémoire. Vous pouvez garder la limite d'espace MetaSpace illimitée. Ainsi, lorsque l'utilisation de la mémoire augmente, vous n'obtiendrez pas d'erreur OutOfMemoryError. Au lieu de cela, la mémoire native réservée est augmentée pour remplir complètement l'augmentation de l'utilisation de la mémoire.
Vous pouvez définir la limite maximale d'espace pour MetaSpace, puis il lancera OutOfMemoryError: Espace de métadonnées. Il est donc important de définir cette limite avec prudence, afin d'éviter le gaspillage de mémoire.
la source
L'implémentation JVM d'Oracle pour Java 8 s'est débarrassée du modèle PermGen et l'a remplacé par Metaspace .
la source