JVM heap stores the objects created by an Application. In languages
like “C”, You must explicitly free the memory by using free(), but
in Java JVM takes care these tasks. No way you can explicitly free
the memory in Java. Everything is done by JVM.
Garbage
collection is a process of freeing memory used by un referenced
objects.
A
disadvantage of garbage-collected heap is that it adds an overhead
that can affect program performance. Since in background, the Java
Garbage collector thread keeps track of the objects like which are in
use and which are not reference by any other etc.,
JVM
perform the Garbage collection periodically, but you can suggest the
JVM, to perform Garbage collection immediately by using
“System.gc()”. But it is not guaranteed to run Garbage collection
immediately, It is just a suggestion went to run Garbage Collector.
It is the JVM, to decide how to respond for the request.
System.gc
Calling
the gc method suggests that the Java Virtual Machine expend effort
toward recycling unused objects in order to make the memory they
currently occupy available for quick reuse. When control returns from
the method call, the Java Virtual Machine has made a best effort to
reclaim space from all discarded objects.
Implementation of gc in System class
public
static void gc() {
Runtime.getRuntime().gc();
}
Simply
it is calling the gc method of Runtime class. So the call System.gc()
is equivalent to the call:
Runtime.getRuntime().gc()
1.
is calling to System.gc() runs the garbage collector immediately ?
No,
Calling the gc method suggests that the Java Virtual Machine expend
effort toward recycling unused objects in order to make the memory
they currently occupy available for quick reuse.
2.
What is the difference between gc() in System class and Runtime
class?
No
difference. System.gc() calls the gc() of Runtime class internally.
3.
Is garbage collector a dameon thread?
Yes, Garbage collector runs
as a background thread
4.
When does an object become eligible for garbage collection?
An
object becomes eligible for Garbage Collection when no references can
access it, I.e, reference count for the object is zero.
You may like
No comments:
Post a Comment