visualgc remote intellij for java jconsole

java - remote - Información de proceso jps no disponible-jconsole y jvisualvm no funcionan



visualvm linux (4)

Después de una actualización de Windows, mi jps, jconsole et jvisualvm ya no funcionan.

Jps me da los identificadores de proceso, pero me dice que la process information unavailable

Y no puedo conectarme a esos procesos con jvisualvm como solía hacerlo.

Estoy ejecutando el 1.6.0_22 jre.

Ya tuve el problema en el pasado, prueba este truco y funcionó. Pero esta vez, mala suerte, no ayuda.

Edición: encontré una solución : en mi carpeta temporal, sí hsperfdata_<username> la hsperfdata_<username> . Aparentemente hubo un problema con el caso de mi nombre de usuario. La carpeta fue llamada hsperfdata_myname. Después de haber sido destruido y recreado por una llamada a jps, se llamó hasperfdata_MYNAME.

Muy extraño.


En Unix, asegúrese de que se está ejecutando como el usuario que lo inició.


En mi carpeta temporal, destruí la carpeta hsperfdata_. Aparentemente hubo un problema con el caso de mi nombre de usuario. La carpeta fue llamada hsperfdata_myname. Después de haber sido destruido y recreado por una llamada a jps, se llamó hasperfdata_MYNAME.

Muy extraño.


Escribí una secuencia de comandos para aplicar la solución alternativa, a la que llamo desde algunas de mis secuencias de comandos de supervisión, hasta que se solucione.

#!/bin/bash # Name: fix_jps.bash # Author: Cameron Pierce # # Purpose: create /tmp/hsperfdata directories that jps and jstat can work with ## VARIABLES RETVAL="" fileHSP="" filePID="" fileLOG=/tmp/fix_jps.log # for every /tmp/hsperfdata_[name] directory that exists for fileHSP in `ls -d /tmp/hsperfdata_*`; do #echo "entry ${fileHSP}" # DEBUG # if our search returns entries that are not directories, skip them if [ ! -d ${fileHSP} ]; then continue fi #ls ${fileHSP} # DEBUG # alternative to ls below #FINDFILES=(${fileHSP}/*) #if [ ${#FINDFILES[@]} -gt 0 ]; then # echo "files in $fileHSP: ${#FINDFILES[@]} " #fi for filePID in `ls ${fileHSP}/ 2>> ${fileLOG} | grep "[[:digit:]]/{1,/}"`; do #echo "pid name: ${filePID}" # DEBUG # if the directory was empty, move on to the next fileENTRY if [ "${filePID}" == "" ]; then #echo "the contents of the variable filePID appear to be empty /"${filePID}/"" # DEBUG # remove the fileHSP if empty; this will clean up user hsperfdata dirs rmdir ${fileHSP} 2>> ${fileLOG} continue # if a symlink already exists, move on to the next fileENTRY elif [ -h /tmp/hsperfdata_${filePID} ]; then #echo "symlink already exists for /tmp/hsperfdata_${filePID}" # DEBUG continue fi #echo "name: ${filePID}" # if a process exists for filePID, create a symlink to the source file ps -eo pid | awk ''{print $1}'' | grep -q "^${filePID}$" RETVAL=$? # if a process exists with pid of filePID and a symlink doesn''t exists, create symlink if [ $RETVAL -eq 0 -a ! -e /tmp/hsperfdata_${filePID} ]; then ln -s ${fileHSP}/${filePID} /tmp/hsperfdata_$filePID #echo ls -l /tmp/hs perfdata_${filePID} # DEBUG fi done done # remove broken symlinks #find -L /tmp/hsperfdata_* -type l # DEBUG find -L /tmp/hsperfdata_* -type l -delete


Estamos teniendo el mismo problema aquí.

El truco de la carpeta tmp tampoco nos funcionó.

Hasta ahora, hemos encontrado algunas maneras de hacer que las cosas vuelvan a funcionar:

  • una restauración del sistema
  • cambie el nombre de la carpeta temporal en "C: / Documents and Settings / myusername / Local Settings" y cree una nueva carpeta temporal (no estoy seguro de que esto sea algo seguro en relación con Windows ...)
  • empezar a eliminar cosas de la carpeta temporal manualmente
  • Probablemente el más seguro: ejecute ccleaner, esto limpiará la carpeta temporal