For efficient memory utilization, Java uses Garbage collector. The main objective of the garbage collector is free up memory by detecting unused objects and deleting them. Garbage Collector gets invoked automatically and it won't assure required memory for a program to run.