Ouvrez le répertoire d'installation d'idées et voyez qu'il existe un répertoire bin avec deux fichiers VMoptions, qui doivent être configurés pour différents JDK:
32 bits: idexe.vmoptions
64 bits: idea64.exe.vmoptions
-Xms512m -xmx1024m -xx: maxpermSize = 512m -xx: réservécodecachesize = 225m -xx: + useConcMarksweepgc -xx: softreflrupolicymspermb = 50 -ea -dsun.io.useCanCaches = false -djava.net.preferipv4Stack =
La liste ci-dessus est le contenu par défaut de idea64.exe.vmoptions , que nous pouvons modifier au besoin.
Les significations de chaque paramètre sont:
1. Définir les paramètres de mémoire JVM
1. Il existe quatre paramètres pour définir la mémoire JVM:
-Xmx Valeur maximale de tas Java, la valeur par défaut est 1/4 de mémoire physique. La valeur de réglage optimale doit dépendre de la taille de la mémoire physique et des autres frais généraux de mémoire dans l'ordinateur;
-Xms Java Heap Initial Valeur. Il est préférable que le serveur JVM définisse -XMS et -XMX à la même valeur. Le JVM de la machine de développement et de test peut conserver la valeur par défaut;
-Xmn Java Heap Young Area Taille, il est préférable de conserver la valeur par défaut si vous ne le savez pas;
-Xss la taille de la pile de chaque thread, il est préférable de conserver la valeur par défaut si vous ne le savez pas;
2. Comment configurer l'allocation de mémoire JVM:
(1) lors du démarrage et de l'utilisation du JVM à l'invite de commande (uniquement efficace pour le test de classe en cours d'exécution):
Java -XMX128M -XMS64M -XMN32M -XSS16M
(2) lors du démarrage et de l'utilisation de JVM dans un environnement de développement intégré (comme Eclipse):
un. Ouvrez eclipse.ini dans le répertoire racine d'Eclipse, et le contenu par défaut est (l'allocation de mémoire JVM est définie ici pour exécuter l'outil de développement actuel):
-VMargs signifie que les éléments suivants sont des paramètres de paramètres de la machine virtuelle. Vous pouvez modifier les valeurs des paramètres, ou ajouter -xmn et -xss. De plus, la mémoire non-héapée peut être définie dans eclipse.ini, comme: -xx: permsize = 56m, -xx: maxpermSize = 128m.
Les valeurs de paramètre définies ici peuvent être affichées dans la barre d'état de l'outil de développement via la configuration suivante:
Créer des options de fichier Dans le répertoire racine Eclipse, le contenu du fichier est: org.eclipse.ui/perf/showHeapStatus=true
Modifiez le fichier eclipse.ini dans le répertoire racine d'Eclipse et ajoutez le contenu suivant au début:
Redémarrez Eclipse et vous pouvez voir qu'il y a plus d'informations JVM dans la barre d'état ci-dessous.
né Open Eclipse-Window-Preférences-Java-Insalled JRE (efficace pour tous les programmes Java exécutés dans l'environnement de développement actuel)
Modifiez le JRE actuellement utilisé, entrez: -XMX128M -XMS64M -XMN32M -XSS16M
c. Open Eclipse-run-run-java application (uniquement efficace pour les classes Java set)
Sélectionnez la classe pour définir l'allocation de mémoire - argument, entrez dans l'argument VM: -xmx128m -xms64m -xmn32m -xss16m
Remarque: Si B et C sont définis en même temps dans le même environnement de développement, le paramètre B prend effet et le paramètre C n'est pas valide, tel que:
Le réglage de l'environnement de développement est: -xmx256m, et le réglage du test de classe est: -xmx128m -xms64m, le paramètre qui prend effet lors du test est:
-Xmx256m -Xms64m
(3) lors du démarrage et de l'utilisation de JVM dans un environnement de serveur (comme Tomcat) (les programmes Java entrent en vigueur dans l'environnement du serveur actuel):
un. Définir les variables d'environnement:
Nom de la variable: Catalina_opts
Valeur variable: -xmx128m -xms64m -xmn32m -xss16m
né Ouvrez le dossier bin dans le répertoire racine de Tomcat, modifiez Catalina.BAT et remplacez le �talina_opts% (quatre places au total) par: -xmx128m -xms64m -xmn32m -xss16m
2. Vérifiez les informations mémoire JVM
Runtime.getRuntime (). MaxMemory (); // Mémoire disponible maximale, correspondant à -xmx
Runtime.getRuntime (). FreeMemory (); // la mémoire libre JVM actuelle
Runtime.getRuntime (). TotalMemory (); // La mémoire totale occupée par le JVM actuel est équivalente à la somme de la mémoire utilisée par le JVM actuel et FreeMemory ()
À propos de MaxMemory (), FreeMemory () et TotalMemory ():
MaxMemory () est la mémoire maximale disponible du JVM, qui peut être définie via -XMX. La valeur par défaut est 1/4 de la mémoire physique et la valeur définie ne peut pas être supérieure à la mémoire physique de l'ordinateur;
TotalMemory () est la mémoire totale occupée par le JVM actuel, et sa valeur est équivalente à la somme de la mémoire utilisée par le JVM actuel et FreeMemory (), qui augmentera à mesure que le JVM utilise des augmentations de mémoire;
FreeMemory () est la mémoire libre JVM actuelle. Étant donné que le JVM n'occupe de la mémoire physique que lorsque la mémoire est nécessaire, la valeur de FreeMemory () est généralement très petite. La mémoire disponible réelle de JVM n'est pas égale à FreeMemory (), mais doit être égale à MaxMemory () - TotalMemory () + FreeMemory (). Il définit l'allocation de mémoire JVM.
Voir la documentation officielle:
http://docs.sun.com/source/819-0084/pt_tuningjava.html
Les paramètres de démarrage Java sont divisés en trois catégories;
L'un est les paramètres standard (-), toutes les implémentations JVM doivent implémenter les fonctions de ces paramètres et sont compatibles en arrière;
Le second est des paramètres non standard (-x). Le JVM par défaut implémente les fonctions de ces paramètres, mais il ne garantit pas que toutes les implémentations JVM sont satisfaites et ne sont pas garanties d'être une compatibilité arrière;
Le troisième est des paramètres non stables (-xx). Chaque implémentation JVM de ces paramètres sera différente et peut être annulée à tout moment à l'avenir. Il doit être utilisé avec prudence;
Plus utile parmi les paramètres standard:
verbeux
-Verbose: classe
Sélectionnez les informations pertinentes de JVM chargeant la classe, et cela peut être utilisé pour le diagnostic lorsque JVM rapporte que la classe ne peut être trouvée ou les conflits de classe.
-Verbose: GC
Sortie la situation pertinente de chaque GC.
-Verbose: Jni
Les résultats de la situation pertinente des appels de méthode native, qui est généralement utilisé pour diagnostiquer les informations d'erreur d'appel JNI.
Les paramètres non standard sont également appelés paramètres étendus
Le plus couramment utilisé est
-XMS512M Réglez le JVM pour que la mémoire soit 512M. Cette valeur peut être définie de la même chose que -xmx pour éviter la mémoire de réallocation JVM chaque fois que la collection de déchets est terminée.
-XMX512M, définissez la mémoire maximale disponible de JVM à 512m.
-XMN200M: Réglez la taille de la jeune génération à 200m. Taille du tas entier = Taille de la jeune génération + Old Generation Taille + Taille de génération persistante. La génération permanente est généralement fixée en taille de 64 m, donc après avoir augmenté la génération plus jeune, la taille de la génération plus âgée sera réduite. Cette valeur a un grand impact sur les performances du système et Sun recommande officiellement la configuration comme 3/8 de l'ensemble du tas.
-XSS128K:
Définit la taille de la pile pour chaque fil. Après JDK5.0, la taille de la pile de chaque fil est de 1 m et dans le passé, la taille de la pile de chaque fil est de 256k. Plus de threads d'application nécessitent une taille de mémoire pour s'ajuster. Dans la même mémoire physique, la réduction de cette valeur peut générer plus de threads. Cependant, le système d'exploitation a toujours une limite sur le nombre de threads dans un processus et ne peut pas être généré à l'infini, avec des valeurs d'expérience allant d'environ 3000 à 5000.
-Xloggc: fichier
Semblable à la fonction -Verbose: GC, il enregistre uniquement la situation pertinente de chaque événement GC dans un fichier. L'emplacement du fichier est le meilleur local pour éviter les problèmes potentiels du réseau.
Si la commande Verbose apparaît sur la ligne de commande en même temps, -xloggc doit prévaloir.
-Xprof
Suit les programmes en cours d'exécution et génère les données de suivi à la sortie standard; Convient pour le débogage de l'environnement de développement.
La liste des paramètres avec -xx comme préfixe peut être non sollicitée dans JVM, et le soleil n'est pas recommandé, et il peut être annulé sans notification à l'avenir; Cependant, bon nombre de ces paramètres nous sont en effet très utiles, tels que -xx: permsize, -xx: maxpermSize, etc. que nous voyons souvent;
Tout d'abord, introduisons les paramètres comportementaux:
| Paramètres et leurs valeurs par défaut | décrire |
| -Xx: -Disableexplicitgc | System.gc () est interdit; Mais le GC de JVM est toujours valable |
| -Xx: + maxfdlimit | Maximiser la limite du nombre de descripteurs de fichiers |
| -Xx: + ScavengeBeforefullgc | La prochaine génération de GCS a priorité sur l'exécution complète de GC |
| -Xx: + usegcoverheadlimit | Limitez la proportion de temps passé sur GC par JVM avant de lancer OOM |
| -Xx: -USEConcmarksweepgc | GC pour la génération plus âgée en utilisant un algorithme d'échange de marque simultanée |
| -Xx: -Useparallegcc | Activer le GC parallèle |
| -Xx: -UseparalleLoldgc | Activer le parallélisme pour GC complet, et cet élément est automatiquement activé lorsque -xx: -USEPARallelGC est activé. |
| -Xx: -USESERIALGC | Activer le GC série |
| -Xx: + usethreadpriorités | Activer la priorité du fil local |
Les trois paramètres de Bold dans le tableau ci-dessus représentent l'exécution de GC dans JVM
Il existe trois façons de tapisser, à savoir la série, le parallèle et la concurrence;
SerialGC est la méthode GC par défaut de JVM. Il convient généralement aux petites applications et aux processeurs uniques. L'algorithme est relativement simple et l'efficacité GC est élevée, mais elle peut provoquer des pauses à l'application;
ParallelGC fait référence à l'exécution GC, ce qui n'a aucun impact sur le fonctionnement de l'application. Les threads de GC et de l'application sont exécutés simultanément, de sorte que le fonctionnement de l'application n'est pas affecté dans la mesure maximale;
La concurrence (CONCMARKSWEEPGC) fait référence à plusieurs threads qui exécutent simultanément GC. Il convient généralement aux systèmes multi-processeurs. Il peut améliorer l'efficacité de GC, mais l'algorithme est complexe et le système consomme beaucoup;
Liste des paramètres de réglage des performances:
| Paramètres et leurs valeurs par défaut | décrire |
| -Xx: GrandPageSizeInBytes = 4m | Définissez la grande taille de la page pour Java Heap |
| -Xx: maxheapfreeratio = 70 | La plus grande proportion de montant inactive dans le tas Java après GC |
| -Xx: maxNewSize = taille | La valeur de mémoire maximale que l'objet nouvellement généré peut occuper |
| -Xx: maxpermSize = 64m | La valeur de mémoire maximale que les objets de génération plus anciens peuvent occuper |
| -Xx: Minheapfreeratio = 40 | La proportion minimale de montant inactive dans le tas Java après GC |
| -Xx: newratio = 2 | Le rapport de la capacité de mémoire de la nouvelle génération à la capacité de mémoire de l'ancienne génération |
| -Xx: NewSize = 2,125m | La valeur par défaut de la mémoire occupe lorsque de nouvelles objets de génération sont générés |
| -Xx: réservécodecachesize = 32m | Gardez la capacité de mémoire occupée par le code |
| -Xx: ThreadStackSize = 512 | Définissez la taille de la pile de threads. Si c'est 0, utilisez la valeur par défaut du système. |
| -Xx: + UseLargepages | Utilisez une grande mémoire de page |
Dans notre réglage quotidien des performances, nous utiliserons essentiellement ces attributs de l'audace ci-dessus;
Liste des paramètres de débogage:
| Paramètres et leurs valeurs par défaut | décrire |
| -Xx: -cime | L'impression consomme du temps dans la compilation JIT |
| -Xx: errorfile =. / Hs_err_pid <pid> .log | Enregistrer les journaux d'erreur ou les données dans les fichiers |
| -Xx: -exetenddtraceprobes | Allumez la sonde DTrace spécifique à Solaris |
| -Xx: HeapDuMppath =. / Java_pid <pid> .hprof | Spécifiez le nom ou le nom du fichier lors de l'exportation d'informations sur le tas |
| -Xx: -heapDumponoutofMemoryError | Exporter des informations pertinentes dans le tas lors de la rencontre de l'OOM pour la première fois |
| -Xx: | Exécuter les commandes personnalisées après une erreur fatale |
| -Xx: onoutofMemoryError = "<cmd args>; <cmd args>" | Exécutez des commandes personnalisées lors de la rencontre de OOM pour la première fois |
| -Xx: -printclasshistogramme | Imprimez des informations en colonnes sur l'instance de classe après la rencontre de Ctrl-Break, la même que la fonction JMAP -Histo |
| -Xx: -printconcurrentlocks | Imprimez les informations pertinentes sur le verrou simultané après avoir rencontré Ctrl-Break, la même fonction que JSTACK -L |
| -Xx: -printCommandLineFlags | Imprimez la marque qui apparaît sur la ligne de commande |
| -Xx: -printcompilation | Imprimez les informations pertinentes lorsqu'une méthode est compilée |
| -Xx: -printgc | Imprimez les informations pertinentes à chaque fois GC |
| -Xx: -Printgc Détails | Imprimer les détails à chaque fois GC |
| -Xx: -printgctimestamps | Imprimez l'horodatage de chaque GC |
| -Xx: -traceclassloading | Suivre les informations de chargement de la classe |
| -Xx: -traceclassloadingPreorder | Suivre les informations de chargement de toutes les classes référencées |
| -Xx: -traceclassresolution | Suivi de la piscine constante |
| -Xx: -traceclassUnloading | Suivi des classes de désinstallation des informations |
| -Xx: -traceloadercraintes | Suivi des informations sur les contraintes de chargeur de classe |
Résumer
Ce qui précède est la méthode de fonctionnement de la définition des paramètres d'exécution de JVM de l'idée Intellij qui vous a été introduite. J'espère que cela vous sera utile. Si vous avez des questions, veuillez me laisser un message et l'éditeur vous répondra à temps. Merci beaucoup pour votre soutien au site Web Wulin.com!