Aunque Java proporciona recolección automática de basura , a veces querrá saber qué tan grande es el montón de objetos y cuánto queda. Esta información se puede utilizar para comprobar la eficacia del código y comprobar aproximadamente cuántos objetos más de un determinado tipo se pueden instanciar. Para obtener estos valores, usamos los
métodos totalMemory() y freeMemory .
Como sabemos, el recolector de basura de Java se ejecuta periódicamente para reciclar objetos no utilizados. Podemos llamar al recolector de basura a pedido llamando al método gc() . Una buena cosa que puede intentar es llamar a gc() y luego llamar a freeMemory() .
Métodos:
- void gc(): Ejecuta el recolector de basura. Llamar a este método sugiere que la máquina virtual Java amplíe sus esfuerzos para reciclar objetos no utilizados a fin de que la memoria que ocupan actualmente esté disponible para su reutilización rápida. Cuando el control regresa de la llamada al método, la máquina virtual ha hecho todo lo posible para reciclar todos los objetos descartados.
Sintaxis:
public void gc() Returns: NA. Exception: NA.
- long freeMemory(): Este método devuelve la cantidad de memoria libre en la Máquina Virtual Java. Llamar al método gc puede resultar en un aumento del valor devuelto por freeMemory.
Sintaxis:
public long freeMemory() Returns: an approximation to the total amount of memory currently available for future allocated objects, measured in bytes. Exception: NA.
- long totalMemory(): este método devuelve la cantidad total de memoria en la máquina virtual Java. El valor devuelto por este método puede variar con el tiempo, según el entorno del host.
Sintaxis:
public long totalMemory() Returns: the total amount of memory currently available for current and future objects, measured in bytes. Exception: NA.
Java
// Java code illustrating gc(), freeMemory() // and totalMemory() methods class memoryDemo { public static void main(String arg[]) { Runtime gfg = Runtime.getRuntime(); long memory1, memory2; Integer integer[] = new Integer[1000]; // checking the total memory System.out.println("Total memory is: " + gfg.totalMemory()); // checking free memory memory1 = gfg.freeMemory(); System.out.println("Initial free memory: " + memory1); // calling the garbage collector on demand gfg.gc(); memory1 = gfg.freeMemory(); System.out.println("Free memory after garbage " + "collection: " + memory1); // allocating integers for (int i = 0; i < 1000; i++) integer[i] = new Integer(i); memory2 = gfg.freeMemory(); System.out.println("Free memory after allocation: " + memory2); System.out.println("Memory used by allocation: " + (memory1 - memory2)); // discard integers for (int i = 0; i < 1000; i++) integer[i] = null; gfg.gc(); memory2 = gfg.freeMemory(); System.out.println("Free memory after " + "collecting discarded Integers: " + memory2); } }
Producción:
Total memory is: 128974848 Initial free memory: 126929976 Free memory after garbage collection: 128632384 Free memory after allocation: 127950744 Memory used by allocation: 681640 Free memory after collecting discarded Integers: 128643696
Este artículo es una contribución de Abhishek Verma (inconformista) . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a contribuido@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA