Hier, lorsque j'exécutais le serveur d'applications Weblogic 11G, j'ai rencontré une erreur de haut niveau, alors j'ai Googled pour la réponse:
Java -Xms256m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=256m -jar wls1032_generic.jar
Tout a fonctionné :)
Cependant, lorsque je pense que deux fois sur la solution, j'ai peut-être commis une erreur: comment puis-je connaître les paramètres actuels de ceux-ci? J'ai certainement besoin de vérifier leurs valeurs avant de les remplacer, non?
Des pensées?
Lien associé: Les personnes dans n autre fil sur SO Approche d'essai et d'erreur suggérée, ce qui n'est pas idéal.
Merci d'avance.
Vous pouvez vérifier les valeurs de tous les drapeaux JVM d'un JVM en cours d'exécution à l'aide de jinfo.exe
utilitaire.
%Java_HOME%\bin\jinfo.exe -flag <flagName> <pid>
afin de vérifier la valeur de -XX:PermSize
Option jvm que vous pouvez exécuter
%Java_HOME%\bin\jinfo.exe -flag PermSize <pid>
Vous pouvez utiliser jmap
AT ICI , c'est un outil de vidage en tas JVM.
par exemple:
jmap -heap 5900
Il va imprimer:
Heap Configuration:
MinHeapFreeRatio = 40
MaxHeapFreeRatio = 70
MaxHeapSize = 989855744 (944.0MB)
NewSize = 1310720 (1.25MB)
MaxNewSize = 17592186044415 MB
OldSize = 5439488 (5.1875MB)
NewRatio = 2
SurvivorRatio = 8
PermSize = 21757952 (20.75MB)
MaxPermSize = 85983232 (82.0MB)
Heap Usage:
PS Young Generation
Eden Space:
capacity = 242352128 (231.125MB)
used = 9196056 (8.770042419433594MB)
free = 233156072 (222.3549575805664MB)
3.79450185805672% used
From Space:
capacity = 41877504 (39.9375MB)
used = 0 (0.0MB)
free = 41877504 (39.9375MB)
0.0% used
To Space:
capacity = 42663936 (40.6875MB)
used = 0 (0.0MB)
free = 42663936 (40.6875MB)
0.0% used
PS Old Generation
capacity = 80609280 (76.875MB)
used = 34187936 (32.604156494140625MB)
free = 46421344 (44.270843505859375MB)
42.41191088668699% used
PS Perm Generation
capacity = 85393408 (81.4375MB)
used = 63472624 (60.53221130371094MB)
free = 21920784 (20.905288696289062MB)
74.32965317416539% used
Il reçoit des informations de mémoire (y compris Permgen) .5900
est l'identifiant de processus de Java.
Vous pouvez utiliser quelque chose comme VisualVM, http://java.dzone.com/articles/best-kept-secret-jdk-visualvm&default=false&zid=159&browser=16&mid=0&refresh= , pour surveiller votre mémoire. Utilisation et vous verrez le Max par où il pict, et cela vous donnera des informations spécifiques sur la partie de la mémoire en réalité, vous pouvez mieux optimiser votre environnement.
Vous constaterez peut-être que une partie de la mémoire que vous ne pensez pas est en train de remplir, et en la surveillant, vous pouvez voir ce que vous devez faire pour obtenir une meilleure performance.
Une autre façon d'obtenir des informations Permgen est la suivante:
kill -3 Java_PID
Il reçoit des informations de vidage de thread et de mémoire (y compris Permgen). Exemple de sortie:
PSPermGen total 68864K, used 68808K [0x000000009c600000, 0x00000000a0940000, 0x00000000a1800000)
Pour une raison quelconque Jinfo n'a pas fonctionné quand j'en avais besoin. Il est retourné:
Unable to open socket file: target process not responding or HotSpot VM not loaded
Il y a peu de causes possibles de ce qui précède et l'une d'entre elles peut être une déclaration explicite du Java.IO.TMPDIR comme décrit à HTTPS: //www.permeance.com.au/web/terry.mueller/home/-/blogs/Unable-to-open-socket-file-Target-Process-not-Revering-or-Hotspot-vm-not charlica