Je tente d'effectuer un vidage de segments Java pour analyser une fuite de mémoire. Chaque fois que j'utilise ceci:Problème lors de la récupération de segments de mémoire Java
jmap -J-d64 -dump:format=b,file=myheapdump -F 29498
Le fichier de vidage de tas arrive à environ 16048 kb et cesse de croître, jmap fonctionnera toujours et ne s'arrêtera pas à moins que je le tue. Sinon j'ai essayé d'utiliser ceci:
jcmd 29498 -F GC.heap_dump heapdump.hprof
Mais depuis que je suis l'exécuter de la racine, et le processus est en cours d'exécution d'un autre utilisateur, je reçois ceci:
com.sun.tools.attach.AttachNotSupportedException: Unable to open socket file: target process not responding or HotSpot VM not loaded
at sun.tools.attach.LinuxVirtualMachine.<init>(LinuxVirtualMachine.java:106)
at sun.tools.attach.LinuxAttachProvider.attachVirtualMachine(LinuxAttachProvider.java:63)
at com.sun.tools.attach.VirtualMachine.attach(VirtualMachine.java:208)
at sun.tools.jcmd.JCmd.executeCommandForPid(JCmd.java:147)
at sun.tools.jcmd.JCmd.main(JCmd.java:131)
Je suppose que ma question est ce que est-ce que je fais mal et quelle est la meilleure façon d'aller de l'avant en essayant d'obtenir cette décharge de tas?
Qu'en est-il de lancer 'jmap' (sans -F) à partir du même compte utilisateur que celui utilisé pour exécuter JVM? – apangin
Je reçois une erreur indiquant que l'utilisateur n'a pas la permission – jymbo
Quelle autorisation? Pour créer un fichier de vidage? Essayez un autre répertoire que l'utilisateur a l'autorisation d'écrire. – apangin