


Exemple d'analyse des problèmes de mémoire lors de la configuration d'Eclipse.ini en Java
Cet article est une analyse détaillée et une introduction au problème des paramètres de mémoire d'Eclipse.ini. Les amis dans le besoin peuvent s'y référer
-vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M
Il y a plusieurs questions ici :
1. Que signifie chaque paramètre ?
2. Pourquoi Eclipse peut-il démarrer sur certaines machines après avoir défini -Xmx et -XX:MaxPermSize sur 512 Mo, mais ne peut pas le faire sur certaines machines ?
3. Pourquoi Eclipse n'effectue-t-il pas les paramètres correspondants lors de l'écriture des paramètres ci-dessus dans le fichier Eclipse.ini ?
Répondons-y un par un
1. Quelle est la signification de chaque paramètre ?
-vmargs dans le paramètre signifie définir les paramètres JVM, donc ce qui suit sont en fait des paramètres JVM. Nous comprenons d'abord le mécanisme de gestion de la mémoire JVM, puis expliquons la signification de chaque paramètre.
Mémoire tas et non tas
Selon la déclaration officielle : "La machine virtuelle Java a un tas. Le tas est la zone de données d'exécution, et la mémoire de toutes les instances de classe et tableaux est allouée à partir d'ici. . Le tas est créé au démarrage de la machine virtuelle Java. "La mémoire en dehors du tas dans la JVM est appelée mémoire non tas." On constate que la JVM gère principalement deux types de mémoire : tas et non tas. En termes simples, le tas est la mémoire accessible au code Java et est réservée aux développeurs ; le non-heap est la mémoire réservée à la JVM pour son propre usage, donc la mémoire requise pour la zone de méthode et le traitement ou l'optimisation interne de la JVM (comme cache de code compilé JIT), chaque structure de classe (telle que le pool de constantes d'exécution, les données de champ et de méthode) et le code des méthodes et des constructeurs sont tous dans la mémoire hors tas.
Allocation de mémoire du tas
La mémoire initiale allouée par la JVM est spécifiée par -Xms, et la valeur par défaut est 1/64 de la mémoire physique ; la mémoire maximale allouée par la JVM est spécifiée par -Xmx, et la valeur par défaut est représente 1/4 de la mémoire physique. Par défaut, lorsque la mémoire du tas libre est inférieure à 40 %, la JVM augmentera le tas jusqu'à la limite maximale de -Xmx ; lorsque la mémoire du tas libre est supérieure à 70 %, la JVM réduira le tas jusqu'à la limite minimale de -Xms. Par conséquent, le serveur définit généralement -Xms et -Xmx comme étant égaux pour éviter d'ajuster la taille du tas après chaque GC.
Allocation de mémoire non tas
JVM utilise -XX:PermSize pour définir la valeur initiale de la mémoire non tas, la valeur par défaut est 1/64 de la mémoire physique XX:MaxPermSize définit la taille maximale de la mémoire non tas ; , la valeur par défaut est 1/64 de la mémoire physique /4.
Limite de mémoire JVM (valeur maximale)
Tout d'abord, la mémoire JVM est limitée à la mémoire physique maximale réelle (un non-sens ! Haha en supposant que la mémoire physique est infinie, la valeur maximale de la mémoire JVM en a beaucoup). à voir avec le système d'exploitation. Pour faire simple, bien que l'espace mémoire contrôlable d'un processeur 32 bits soit de 4 Go, le système d'exploitation spécifique fixera une limite. Cette limite est généralement de 2 Go à 3 Go (en général, elle est de 1,5G-2G sous les systèmes Windows et de 1,5). G-2G sous les systèmes Linux). 2G-3G), et il n'y aura aucune restriction sur les processeurs supérieurs à 64 bits.
2.Pourquoi Eclipse peut-il démarrer sur certaines machines après avoir défini -Xmx et -XX:MaxPermSize sur 512M, alors que certaines machines ne le peuvent pas ?
Grâce à l'introduction ci-dessus de la gestion de la mémoire JVM, nous avons appris que la mémoire JVM comprend deux types : la mémoire tas et la mémoire non tas. De plus, la mémoire maximale de la JVM dépend d'abord de la mémoire physique réelle et du système d'exploitation. Ainsi, la définition des paramètres de la VM entraîne l'échec du démarrage du programme principalement pour les raisons suivantes :
1) La valeur de -Xms dans le paramètre est supérieure à -Xmx, ou la valeur de - XX:PermSize est supérieur à -XX :MaxPermSize
2) La somme des valeurs de -Xmx et -XX:MaxPermSize dépasse la limite maximale de la mémoire JVM, telle que la limite maximale de mémoire du système d'exploitation actuel, ou mémoire physique réelle, etc. En parlant de mémoire physique réelle, une chose à noter ici est que si votre mémoire est de 1 024 Mo, il se peut qu'elle ne soit pas 1 024 Mo utilisée dans le système réel, car une partie de celle-ci est occupée par le matériel.
3.Pourquoi Eclipse n'effectue-t-il pas les paramètres correspondants lors de l'écriture des paramètres ci-dessus dans le fichier Eclipse.ini ?
Alors pourquoi le même paramètre est-il valide dans le raccourci ou la ligne de commande mais invalide dans le fichier Eclipse.ini ? C'est parce que nous n'avons pas suivi les règles de paramétrage du fichier Eclipse.ini :
Les paramètres sont sous la forme de "valeur de l'élément". S'il y a des espaces au milieu, ils doivent être écrits sur une nouvelle ligne. S'il y a des espaces dans la valeur, ils doivent être placés entre guillemets. Par exemple, nous utilisons le paramètre -vm C:Javajre1.6.0binjavaw.exe pour configurer la machine virtuelle. Dans le fichier Eclipse.ini, il doit être écrit comme ceci :
-vm
C. :Javajre1.6.0binjavaw.exe
Comme mentionné ci-dessus, les paramètres finaux dans Eclipse.ini peuvent être écrits comme ceci :
-vmargs
-Xms128M
-Xmx512M
-XX :PermSize=64M
-XX :MaxPermSize=128M
Les résultats d'exécution réels peuvent être consultés via le bouton "Détails de configuration" dans la fenêtre "Aide" - "À propos du SDK Eclipse" dans Eclipse.
Il convient également de noter que le contenu du fichier Eclipse.ini inclus dans le package compressé Eclipse est le suivant :
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
-vmargs
-Xms40m
-Xmx256m
Parmi eux –launcher.XXMaxPermSize (notez qu'il y a deux lignes de connexion à l'avant) et -XX:MaxPermSize ont fondamentalement la même signification. Je pense que la seule différence est que le premier est le paramètre défini au démarrage d'Eclipse.exe, tandis que le second est le paramètre dans la JVM utilisée par Eclipse. En fait, définissez simplement l'un des deux, vous pouvez donc ici commenter –launcher.XXMaxPermSize et la ligne suivante avec #.
3. Autres paramètres de démarrage. Si vous disposez d'un processeur dual-core, vous pouvez essayer ce paramètre :
-XX:+UseParallelGC
pour accélérer l'exécution du GC. (Juste un paramètre nouvellement ajouté pour GC dans JDK 5)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds





Guide du nombre parfait en Java. Nous discutons ici de la définition, comment vérifier le nombre parfait en Java ?, des exemples d'implémentation de code.

Guide de Weka en Java. Nous discutons ici de l'introduction, de la façon d'utiliser Weka Java, du type de plate-forme et des avantages avec des exemples.

Guide du nombre de Smith en Java. Nous discutons ici de la définition, comment vérifier le numéro Smith en Java ? exemple avec implémentation de code.

Dans cet article, nous avons conservé les questions d'entretien Java Spring les plus posées avec leurs réponses détaillées. Pour que vous puissiez réussir l'interview.

Java 8 présente l'API Stream, fournissant un moyen puissant et expressif de traiter les collections de données. Cependant, une question courante lors de l'utilisation du flux est: comment se casser ou revenir d'une opération FOREAK? Les boucles traditionnelles permettent une interruption ou un retour précoce, mais la méthode Foreach de Stream ne prend pas directement en charge cette méthode. Cet article expliquera les raisons et explorera des méthodes alternatives pour la mise en œuvre de terminaison prématurée dans les systèmes de traitement de flux. Lire plus approfondie: Améliorations de l'API Java Stream Comprendre le flux Forach La méthode foreach est une opération terminale qui effectue une opération sur chaque élément du flux. Son intention de conception est

Guide de TimeStamp to Date en Java. Ici, nous discutons également de l'introduction et de la façon de convertir l'horodatage en date en Java avec des exemples.

Les capsules sont des figures géométriques tridimensionnelles, composées d'un cylindre et d'un hémisphère aux deux extrémités. Le volume de la capsule peut être calculé en ajoutant le volume du cylindre et le volume de l'hémisphère aux deux extrémités. Ce tutoriel discutera de la façon de calculer le volume d'une capsule donnée en Java en utilisant différentes méthodes. Formule de volume de capsule La formule du volume de la capsule est la suivante: Volume de capsule = volume cylindrique volume de deux hémisphères volume dans, R: Le rayon de l'hémisphère. H: La hauteur du cylindre (à l'exclusion de l'hémisphère). Exemple 1 entrer Rayon = 5 unités Hauteur = 10 unités Sortir Volume = 1570,8 unités cubes expliquer Calculer le volume à l'aide de la formule: Volume = π × r2 × h (4

Java est un langage de programmation populaire qui peut être appris aussi bien par les développeurs débutants que par les développeurs expérimentés. Ce didacticiel commence par les concepts de base et progresse vers des sujets avancés. Après avoir installé le kit de développement Java, vous pouvez vous entraîner à la programmation en créant un simple programme « Hello, World ! ». Une fois que vous avez compris le code, utilisez l'invite de commande pour compiler et exécuter le programme, et « Hello, World ! » s'affichera sur la console. L'apprentissage de Java commence votre parcours de programmation et, à mesure que votre maîtrise s'approfondit, vous pouvez créer des applications plus complexes.
