Object lifetime means how long an object exists in a program. It helps us understand when an object is created and when it is removed.
Object lifetime in Java
// Object is created when you use 'new' ClassName obj = new ClassName(); // Object is destroyed when no references point to it and garbage collector runs
Objects are created using the new keyword.
Java automatically removes objects when they are no longer used, called garbage collection.
MyClass and stores it in obj.MyClass obj = new MyClass();obj = null;localObj is created when the method runs and disappears when the method ends.public void method() { MyClass localObj = new MyClass(); // localObj exists only inside this method }
This program creates two objects. One is set to null right after creation, so it can be removed by Java's garbage collector. The other exists until the program ends. The finalize method shows when objects are destroyed (note: it may run later or not at all immediately).
class ObjectLifetimeDemo { public static void main(String[] args) { MyClass obj1 = new MyClass(); obj1 = null; // obj1 no longer points to the object MyClass obj2 = new MyClass(); // obj2 exists until main ends System.out.println("Program finished"); } } class MyClass { public MyClass() { System.out.println("Object created"); } @Override protected void finalize() throws Throwable { System.out.println("Object destroyed"); super.finalize(); } }
Java's garbage collector decides when to remove objects; it is not immediate after setting references to null.
The finalize method is called before an object is removed but is not guaranteed to run immediately.
Local objects inside methods exist only while the method runs.
Objects are created with new and exist while referenced.
When no references point to an object, Java can remove it automatically.
Understanding object lifetime helps manage memory and avoid errors.
Practice
Solution
Step 1: Understand object references in Java
Objects are created usingnewand remain in memory while referenced.Step 2: Recognize garbage collection behavior
When no references point to an object, Java's garbage collector can remove it.Final Answer:
An object exists as long as there is at least one reference to it. -> Option AQuick Check:
Object lifetime depends on references [OK]
- Thinking objects exist only during main method
- Believing objects are deleted immediately after creation
- Assuming objects live forever regardless of references
Solution
Step 1: Recall Java object creation syntax
Objects are created using thenewkeyword followed by the constructor call with parentheses.Step 2: Check each option's syntax
MyClass obj = new MyClass(); uses correct syntax:new MyClass();. Options A, C, and D are incorrect due to missingnew, wrong keywords, or missing parentheses.Final Answer:
MyClass obj = new MyClass(); -> Option CQuick Check:
Usenew ClassName()to create objects [OK]
- Omitting the 'new' keyword
- Forgetting parentheses after class name
- Using incorrect keywords like 'create'
class Test {
public static void main(String[] args) {
Test obj1 = new Test();
Test obj2 = obj1;
obj1 = null;
if (obj2 != null) {
System.out.println("Object alive");
} else {
System.out.println("Object dead");
}
}
}Solution
Step 1: Analyze object references
Initially,obj1points to the new object. Thenobj2also points to the same object.Step 2: Check effect of setting
Settingobj1to nullobj1to null removes one reference, butobj2still references the object, so it remains alive.Final Answer:
Object alive -> Option DQuick Check:
Object lives while any reference exists [OK]
- Assuming object is dead after one reference is null
- Confusing references with object existence
- Expecting compilation or runtime errors
public class Demo {
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 is set tonull, removing the reference.Step 2: Analyze method call on null reference
Callings.length()whensisnullcauses aNullPointerExceptionat runtime.Final Answer:
NullPointerException at runtime -> Option BQuick Check:
Calling methods on null causes NullPointerException [OK]
- Thinking code compiles but runs fine
- Expecting compilation errors instead of runtime
- Ignoring null assignment effect
class Node {
Node next;
int value;
Node(int v) { value = v; }
}
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 objects are eligible for garbage collection here?
}
}Which objects are eligible for garbage collection after setting
b = null;?Solution
Step 1: Analyze references to objects
Variableareferences the first Node object. Itsnextfield references the second Node object originally referenced byb.Step 2: Understand effect of setting
Settingbto nullbto null removes one reference to the second Node, buta.nextstill references it, so it is not eligible for garbage collection.Final Answer:
No objects are eligible becauseastill referencesbthroughnext. -> Option AQuick Check:
Objects live while any reference exists [OK]
- Assuming null variable means object is collectible
- Ignoring references inside other objects
- Confusing variable nullification with object lifetime
Ready to prove it?
Pass the test and this pattern moves unknown
