0% found this document useful (0 votes)
3 views

A Definition of Java Garbage Collection

Uploaded by

jayakanthan
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
3 views

A Definition of Java Garbage Collection

Uploaded by

jayakanthan
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 2

A Definition of Java Garbage Collection

Java garbage collection is the process by which Java programs perform automatic memory
management. Java programs compile to bytecode that can be run on a Java Virtual Machine,
or JVM for short. When Java programs run on the JVM, objects are created on the heap,
which is a portion of memory dedicated to the program. Eventually, some objects will no
longer be needed. The garbage collector finds these unused objects and deletes them to
free up memory.

How Java Garbage Collection Works


Java garbage collection is an automatic process. The programmer does not need to explicitly
mark objects to be deleted. The garbage collection implementation lives in the JVM. Each
JVM can implement garbage collection however it pleases; the only requirement is that it
meets the JVM specification. Although there are many JVMs, Oracle’s HotSpot is by far the
most common. It offers a robust and mature set of garbage collection options.

While HotSpot has multiple garbage collectors that are optimized for various use cases, all
its garbage collectors follow the same basic process. In the first step, unreferenced
objects are identified and marked as ready for garbage collection. In the second step,
marked objects are deleted. Optionally, memory can be compacted after the garbage
collector deletes objects, so remaining objects are in a contiguous block at the start of the
heap. The compaction process makes it easier to allocate memory to new objects
sequentially after the block of memory allocated to existing objects.

All of HotSpot’s garbage collectors implement a generational garbage collection strategy


that categorizes objects by age. The rationale behind generational garbage collection is that
most objects are short-lived and will be ready for garbage collection soon after creation.

Image via Wikipedia

The heap is divided into three sections:


 Young Generation: Newly created objects start in the Young Generation. The Young
Generation is further subdivided into an Eden space, where all new objects start, and
two Survivor spaces, where objects are moved from Eden after surviving one garbage
collection cycle. When objects are garbage collected from the Young Generation, it is a
minor garbage collection event.

 Old Generation: Objects that are long-lived are eventually moved from the Young
Generation to the Old Generation. When objects are garbage collected from the Old
Generation, it is a major garbage collection event.

 Permanent Generation: Metadata such as classes and methods are stored in the
Permanent Generation. Classes that are no longer in use may be garbage collected from
the Permanent Generation.

You might also like