Wednesday, August 26, 2015

Garbage collection in java happens automatically , which
is the biggest reason of Choosing Java over C++ or C programming languages.

Java objects are created in Heap area of Java virtual
machine. Understanding how automatic garbage collection works can help you identify
the potential performance barriers.

Java Heap space is divided into 3 sub areas.

New generation

Old generation

Perm Generation

New Generation is further divided into three categories.

EDEN SPACE

S0 Survivor 1

S1 Survivor 2

Below is the
detailed information on how garbage collection takes place in Java.

Any
new objects are allocated to the eden space. Both survivor spaces start out
empty.

When
the eden space fills up, a minor garbage collection is triggered.

Referenced
objects are moved to the first survivor space. Unreferenced objects are deleted
when the eden space is cleared.

At the
next minor GC, the same thing happens for the eden space. Unreferenced objects
are deleted and referenced objects are moved to a survivor space. However, in
this case, they are moved to the second survivor space (S1). In addition,
objects from the last minor GC on the first survivor space (S0) have their age
incremented and get moved to S1. Once all surviving objects have been moved to
S1, both S0 and eden are cleared. Notice we now have differently aged object in
the survivor space.

At the
next minor GC, the same process repeats. However this time the survivor spaces
switch. Referenced objects are moved to S0. Surviving objects are aged.Eden and S1 are cleared.

After
a minor GC, when aged objects reach a certain age threshold (8 in this example)
they are promoted from young generation to old generation.

As
minor GCs continue to occur objects will continue to be promoted to the old
generation space.

So that pretty
much covers the entire process with the young generation.

Eventually, a major
GC will be performed on the old generation which cleans up and compacts that
space.

Stop
the World Event- All minor garbage collections are
"Stop the World" events. This means that all application threads are
stopped until the operation completes. Minor garbage collections arealways Stop
the World events.