| 
 /*
 * Output:
 Total memory is: 2031616
 Initial free memory: 1774312
 Free memory after garbage collection: 1875680
 Free memory after allocation: 1715296
 Memory used by allocation: 160384
 Free memory after collecting discarded Integers: 1875680
 */
 
 public class MainClass {
 public static void main(String args[]) {
 Runtime r = Runtime.getRuntime();
 long mem1, mem2;
 Integer someints[] = new Integer[10000];
 
 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 < someints.length; 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));
 
 for (int i = 0; i < someints.length; i++)
 someints[i] = null;
 
 r.gc(); // request garbage collection
 
 mem2 = r.freeMemory();
 System.out.println("Free memory after collecting" + " discarded Integers: "
 + mem2);
 
 }
 }
 
 
 
 |