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