Java check memory Allocation

By | April 7, 2012
class test
{
    public static void main(String args[])
    {
            Runtime r = Runtime.getRuntime();
            long mem1, mem2;
            Integer someints[] = new Integer[1000];
            System.out.println("Total memory is: " +r.totalMemory());
            mem1 = r.freeMemory();
            System.out.println("Initial free memory: " + mem1);
            r.gc();
            mem1 = r.freeMemory();
            System.out.println("Free memory after garbage collection: "+ mem1);
 
            for(int i=0; i<1000; i++)
                someints[i] = new Integer(i); // allocate integers
            mem2 = r.freeMemory();
 
            System.out.println("Free memory after allocation: " + mem2);
            System.out.println("Memory used by allocation: "+ (mem1-mem2));
 
            //  discard Integers
            for(int i=0; i<1000; i++) someints[i] = null;
                r.gc(); // request garbage collection
 
            mem2 = r.freeMemory();
            System.out.println("Free memory after collecting" +" discarded Integers: " + mem2);
    }
}

When run the code the output will be similar to this

Total memory is: 5177344
Initial free memory: 4986744
Free memory after garbage collection: 5063784
Free memory after allocation: 5045296
Memory used by allocation: 18488
Free memory after collecting discarded Integers: 5063784

Leave a Reply

Your email address will not be published. Required fields are marked *