Java Tutorial
Java supports automatic garbage collection, Java's garbage collector runs in frequently to recycle or clean up unused objects.
Java also provides the provision to run garbage collector on demand by invoking gc method which is available in Runtime object.
Sometimes we may want to know how much object size in heap and how much size left in heap etc. Java has totalMemory and freeMemory methods to get these information.
Memory management supports to check code for efficiency or how many objects of certain type can be instantiated etc.
This simple java program illustrates to trigger the garbage collection manually.
freeMemory method in Runtime class is used to get the available memory size in JVM (Java Virtual MAchine).
gc method is used to perform the garbage collection.
import java.util.*; public class GarbageCollectionTest { public static void main(String[] args){ Runtime runtime = Runtime.getRuntime(); long freeJVMMemory = runtime.freeMemory(); System.out.println("JVM Free Memory Before Garbage Collection: " +freeJVMMemory); // Performs garbage collection. runtime.gc(); freeJVMMemory = runtime.freeMemory(); System.out.println("JVM Free Memory After Garbage Collection: " +freeJVMMemory); } }Output:
$ javac GarbageCollectionTest.java $ java GarbageCollectionTest JVM Free Memory Before Garbage Collection: 125535480 JVM Free Memory After Garbage Collection: 126594096
import java.util.*; class MemoryManagement { public static void main(String args[]) { Runtime runtime = Runtime.getRuntime(); Integer integerList[] = new Integer[2000]; // Getting total memory in heap on machine System.out.println("Total Memory: " + runtime.totalMemory()); // Getting free memory in heap on machine System.out.println("Initial Free Memory: " + runtime.freeMemory()); // Manually running garbage collector runtime.gc(); long memoryBefore = runtime.freeMemory(); System.out.println("Free memory after Garbage Collection: " + memoryBefore); Random random = new Random(); // Alocating memory for each integer elements in array for(int i =0; i<2000; i++) { //Generates random integer number for each array elements integerList[i] = new Integer(random.nextInt()); } // Gets free memory after array elements allocation long memoryAfter = runtime.freeMemory(); System.out.println("Free memory after allocation: " + memoryAfter); // Difference to get allocation size before and after allocated for integer array elements. System.out.println("Memory is used for allocation: " + (memoryBefore-memoryAfter)); // Deallocating array elements for(int i =0; i<2000; i++) { integerList[i] = null; } //Garbage collection runtime.gc(); // After deallocation free memory size System.out.println("Free memory after deallocation: " + runtime.freeMemory()); } }Output:
$ java MemoryManagement Total Memory: 247463936 Initial Free Memory: 246163688 Free memory after Garbage Collection: 247194624 Free memory after allocation: 245894320 Memory is used for allocation: 1300304 Free memory after deallocation: 245891576
protected void finalize() { //code to release resources which object holds. }finalize() method will be invoke when an object is just about to be destroyed by garbage collector in java.
Java Tutorial
Privacy Policy | Copyright2020 - All Rights Reserved. | Contact us
| Report website issues in Github
| Facebook page
| Google+ page