Destroy objects in Java

If I set a null object, will Java destroy the original object?

For example:

Foo f = new Foo();
// ...
Foo b = f;

If I set B to null now, will f also become empty? What is the common name for this behavior?

Solution

no All setting B to null removes the reference of the object from B F still references the object If f is also set to null, the object will have no outstanding references and will eventually be garbage collected

Let's throw some ASCII art here:

First, let's do this:

Foo f = new Foo();

And get this in memory:

+------------+
|     f      |
+------------+     +-----------------------+
| (Ref #123) |---->|       Foo #123        |
+------------+     +-----------------------+
                   | (data for the object) |
                   +-----------------------+

(obviously, #123 just to give an idea that REF does have some specific values; we've never seen the actual value, but the JVM does.)

Then, if we do this:

Foo b = f;

We have:

+------------+
|     f      |
+------------+
| (Ref #123) |--+
+------------+  |
                |
                |  +-----------------------+
                +->|       Foo #123        |
+------------+  |  +-----------------------+
|     b      |  |  | (data for the object) |
+------------+  |  +-----------------------+
| (Ref #123) |--+
+------------+ 

If we do

b = null;

We have:

+------------+
|     f      |
+------------+     +-----------------------+
| (Ref #123) |---->|       Foo #123        |
+------------+     +-----------------------+
                   | (data for the object) |
+------------+     +-----------------------+
|     b      |
+------------+
| null       |
+------------+ 

As you can see, F and the object itself are not affected

The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>