Understanding the object lifecycle helps you know how objects are created, used, and removed in a program.
Object lifecycle in Java
Start learning this pattern below
Jump into concepts and practice - no test required
ClassName obj = new ClassName(); // use obj obj = null; // object eligible for garbage collection
Objects are created using the new keyword.
Objects are removed automatically by Java's garbage collector when no longer used.
Car object and stores it in myCar.Car myCar = new Car();Car object, making it ready for cleanup.myCar = null;finalize() and garbage collection.public class Person { public Person() { System.out.println("Person created"); } @Override protected void finalize() throws Throwable { System.out.println("Person destroyed"); super.finalize(); } } Person p = new Person(); p = null; System.gc();
This program creates an object, removes its reference, and calls garbage collection to show when the object is destroyed.
public class ObjectLifecycleDemo { static class Demo { Demo() { System.out.println("Object created"); } @Override protected void finalize() throws Throwable { System.out.println("Object destroyed"); super.finalize(); } } public static void main(String[] args) { Demo obj = new Demo(); obj = null; // Remove reference System.gc(); // Suggest garbage collection try { Thread.sleep(1000); // Wait to see finalize output } catch (InterruptedException e) { e.printStackTrace(); } } }
Garbage collection runs automatically but calling System.gc() only suggests it; it may not run immediately.
The finalize() method is called before an object is removed but is deprecated in newer Java versions.
Setting object references to null helps the garbage collector know the object is no longer needed.
Objects are created with new and live while referenced.
When no references remain, objects become eligible for garbage collection.
Java automatically cleans up unused objects to free memory.
Practice
Solution
Step 1: Understand object creation
In Java, objects are created using thenewkeyword which allocates memory.Step 2: Understand object lifetime
An object remains alive as long as there is at least one reference pointing to it. When no references remain, it becomes eligible for garbage collection.Final Answer:
An object is created withnewand exists as long as it has references. -> Option DQuick Check:
Object lifecycle = created withnewand referenced [OK]
- Thinking objects live forever
- Believing manual deletion is needed
- Assuming objects are created without new
Car in Java?Solution
Step 1: Recall Java object creation syntax
In Java, to create an object, use the syntax:ClassName variable = new ClassName();Step 2: Match options with correct syntax
Car myCar = new Car(); matches the correct syntax. Other options have syntax errors or invalid keywords.Final Answer:
Car myCar = new Car(); -> Option BQuick Check:
Usenewkeyword to create objects [OK]
- Omitting 'new' keyword
- Incorrect order of keywords
- Using invalid method-like syntax
class Demo {
public static void main(String[] args) {
Demo obj1 = new Demo();
Demo obj2 = obj1;
obj1 = null;
if (obj2 != null) {
System.out.println("Object is alive");
} else {
System.out.println("Object is gone");
}
}
}Solution
Step 1: Analyze object references
Initially,obj1points to a new Demo object. Thenobj2is assigned the same reference asobj1.Step 2: Check null assignment and condition
obj1is set to null, butobj2still references the object. The if condition checksobj2 != null, which is true.Final Answer:
Object is alive -> Option AQuick Check:
Object lives while referenced = true [OK]
- Assuming object is gone when one reference is null
- Confusing reference variables with objects
- Expecting compilation or runtime errors
public class Test {
public static void main(String[] args) {
String s = new String("hello");
s = null;
System.out.println(s.length());
}
}Solution
Step 1: Understand object reference and null assignment
The variablesinitially references a String object. Then it is set to null, so it no longer points to any object.Step 2: Analyze method call on null reference
Callings.length()whensis null causes aNullPointerExceptionat runtime.Final Answer:
NullPointerException at runtime -> Option CQuick Check:
Calling method on null reference causes exception [OK]
- Thinking null assignment causes compile error
- Expecting output instead of exception
- Ignoring null pointer risks
class Node {
Node next;
int value;
Node(int val) { value = val; }
}
public class Test {
public static void main(String[] args) {
Node a = new Node(1);
Node b = new Node(2);
a.next = b;
b = null;
// Which nodes are eligible for garbage collection here?
}
}Which nodes are eligible for garbage collection after
b = null;?Solution
Step 1: Analyze references after assignment
Variableareferences a Node with value 1. This node'snextpoints to the Node with value 2.Step 2: Check if nodes are still reachable
Even thoughbis set to null, the Node with value 2 is still referenced bya.next. So both nodes are still reachable and not eligible for garbage collection.Final Answer:
Neitheranorbnodes are eligible -> Option AQuick Check:
Objects reachable via references are not collected [OK]
- Assuming null variable means object is collected
- Ignoring references inside objects
- Confusing variable null with object eligibility
