java - increase - ¿Cómo ver el tamaño de almacenamiento dinámico actual que está usando una aplicación?
netbeans out of memory java heap space (7)
Adjunte con jvisualvm de Sun Java 6 JDK. Las banderas de inicio están en la lista.
Creo que aumenté mi tamaño de almacenamiento dinámico a 1 GB en NetBeans desde que cambié la configuración para que se vea así:
netbeans_default_options="-J-Xmx1g ......
Después de reiniciar NetBeans, ¿puedo estar seguro de que ahora mi aplicación tiene 1 GB?
¿Hay alguna manera de verificar esto?
Favorito personal para cuando jvisualvm es exagerado o necesita cli-only: jvmtop
JvmTop 0.8.0 alpha amd64 8 cpus, Linux 2.6.32-27, load avg 0.12
https://github.com/patric-r/jvmtop
PID MAIN-CLASS HPCUR HPMAX NHCUR NHMAX CPU GC VM USERNAME #T DL
3370 rapperSimpleApp 165m 455m 109m 176m 0.12% 0.00% S6U37 web 21
11272 ver.resin.Resin [ERROR: Could not attach to VM]
27338 WatchdogManager 11m 28m 23m 130m 0.00% 0.00% S6U37 web 31
19187 m.jvmtop.JvmTop 20m 3544m 13m 130m 0.93% 0.47% S6U37 web 20
16733 artup.Bootstrap 159m 455m 166m 304m 0.12% 0.00% S6U37 web 46
Para comprobar el tamaño del almacenamiento dinámico de la aplicación Java y el tiempo de CPU, use las herramientas de JProfiler que accederán a su JVM y mostrarán toda la asignación de tiempo de la CPU y del montón.
enchufe disponible para eclipse e intellej Idea IDE
Enlace para Descargar Jprofiler
Puede usar jconsole (estándar con la mayoría de los JDK) para verificar los tamaños de almacenamiento dinámico de cualquier proceso de Java.
Puede usar la herramienta: Eclipse Memory Analyzer Tool http://www.eclipse.org/mat/ .
Es muy útil.
Usa este código:
// Get current size of heap in bytes
long heapSize = Runtime.getRuntime().totalMemory();
// Get maximum size of heap in bytes. The heap cannot grow beyond this size.// Any attempt will result in an OutOfMemoryException.
long heapMaxSize = Runtime.getRuntime().maxMemory();
// Get amount of free memory within the heap in bytes. This size will increase // after garbage collection and decrease as new objects are created.
long heapFreeSize = Runtime.getRuntime().freeMemory();
Me fue útil saberlo.
public class CheckHeapSize {
public static void main(String[] args) {
// TODO Auto-generated method stub
long heapSize = Runtime.getRuntime().totalMemory();
// Get maximum size of heap in bytes. The heap cannot grow beyond this size.// Any attempt will result in an OutOfMemoryException.
long heapMaxSize = Runtime.getRuntime().maxMemory();
// Get amount of free memory within the heap in bytes. This size will increase // after garbage collection and decrease as new objects are created.
long heapFreeSize = Runtime.getRuntime().freeMemory();
System.out.println("heapsize"+formatSize(heapSize));
System.out.println("heapmaxsize"+formatSize(heapMaxSize));
System.out.println("heapFreesize"+formatSize(heapFreeSize));
}
public static String formatSize(long v) {
if (v < 1024) return v + " B";
int z = (63 - Long.numberOfLeadingZeros(v)) / 10;
return String.format("%.1f %sB", (double)v / (1L << (z*10)), " KMGTPE".charAt(z));
}
}