¿Cómo encontrar la memoria máxima, la memoria libre y la memoria total en Java?

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *