Necesito verificar el uso de CPU y memoria para el servidor en java, ¿alguien sabe cómo se podría hacer?
java
operating-system
cpu
ram
Johnny Bou
fuente
fuente
Respuestas:
Si está buscando específicamente memoria en JVM:
Sin embargo, estos deben tomarse solo como una estimación ...
fuente
fuente
freeMemory
aquí devuelve la cantidad de memoria disponible en JVM que es muy diferenteSi está utilizando Sun JVM y está interesado en el uso de la memoria interna de la aplicación (cuánto de la memoria asignada está usando su aplicación), prefiero activar el registro de recolección de basura integrado de la JVM. Simplemente agrega -verbose: gc al comando de inicio.
De la documentación de Sun:
Para obtener más información, consulte: http://java.sun.com/docs/hotspot/gc5.0/gc_tuning_5.html
fuente
Desde aqui
fuente
operatingSystemMXBean.getProcessCpuLoad();
? Según la documentación de Oracle, este método devuelve "Devuelve el" uso reciente de la CPU "para el proceso de la máquina virtual Java". Sin embargo, veo una diferencia numérica relativamente grande entre su método y este método.OperatingSystemMXBean
clases. Uno es la interfaz proporcionada enjava.lang
. Pero también hay otra versión, que amplía esta encom.sun.management
. Ese es el método al que me refería es de esoOperatingSystemMXBean
JMX, los MXBeans (ThreadMXBean, etc.) proporcionados le proporcionarán usos de memoria y CPU.
fuente
Para el uso de la memoria, funcionará lo siguiente,
Para el uso de CPU, necesitará usar una aplicación externa para medirlo.
fuente
Desde Java 1.5, el JDK viene con una nueva herramienta: JConsole que puede mostrarle el uso de CPU y memoria de cualquier JVM 1.5 o posterior. Puede hacer gráficos de estos parámetros, exportar a CSV, mostrar el número de clases cargadas, el número de instancias, interbloqueos, hilos, etc.
fuente
Si usa la solución runtime / totalMemory que se ha publicado en muchas respuestas aquí (lo he hecho mucho), asegúrese de forzar dos recolecciones de basura primero si desea resultados bastante precisos / consistentes.
Para mayor eficiencia, Java generalmente permite que la basura llene toda la memoria antes de forzar un GC, e incluso entonces no suele ser un GC completo, por lo que sus resultados para runtime.freeMemory () siempre estarán en algún lugar entre la cantidad "real" de memoria libre y 0 .
El primer GC no obtiene todo, obtiene la mayor parte.
La ventaja es que si solo haces la llamada freeMemory () obtendrás un número que es absolutamente inútil y varía ampliamente, pero si haces 2 gc's primero, es un indicador muy confiable. También hace que la rutina sea MUCHO más lenta (segundos, posiblemente).
fuente
El objeto Runtime de Java puede informar sobre el uso de memoria de la JVM. Para el consumo de CPU, tendrá que usar una utilidad externa, como la parte superior de Unix o el Administrador de procesos de Windows.
fuente
Aquí hay un código simple para calcular el uso de memoria actual en megabytes:
fuente
También agregaría la siguiente forma de rastrear la carga de la CPU:
Puedes leer más aquí
fuente
JConsole es una manera fácil de monitorear una aplicación Java en ejecución o puede usar un Profiler para obtener información más detallada sobre su aplicación. Me gusta usar NetBeans Profiler para esto.
fuente
El generador de perfiles YourKit Java es una excelente solución comercial. Puede encontrar más información en los documentos sobre perfiles de CPU y perfiles de memoria .
fuente
Si está utilizando Tomcat, consulte Psi Probe , que le permite monitorear el consumo de memoria interna y externa, así como una serie de otras áreas.
fuente
Para Eclipse, puede utilizar TPTP (plataforma de herramientas de prueba y rendimiento) para analizar el uso de la memoria, etc. más información
fuente