Java中的弱引用究竟是什么性质的数据结构?

2026-04-19 15:420阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计926个文字,预计阅读时间需要4分钟。

Java中的弱引用究竟是什么性质的数据结构?

在Java中,对象obj被创建时,其存储在堆内存中。当垃圾回收器运行时,若发现没有对obj的引用指向,则会回收obj占用的堆内存。一个对象被回收,必须满足以下两个条件:(1)没有对任何的引用;(2)没有对直接的引用。

Java里一个对象obj被创建时,被放在堆里。当GC运行的时候,发现没有任何引用指向obj,那么就会回收obj对象的堆内存空间。

换句话说,一个对象被回收, 必须满足两个条件:

Java中的弱引用究竟是什么性质的数据结构?

(1)没有任何引用指向它

(2)GC被运行。

在实际开发中,我们可以通过把所有指向某个对象的referece置空来保证这个对象在下次GC运行的时候被回收,类似下面:

Object c = new Car(); c=null;

但是,这样做是一件很繁琐并且违背GC自动回收原则的事。对于简单的情况, 手动置空是不需要程序员来做的, 因为在java中, 对于简单对象, 当调用它的方法执行完毕后, 指向它的引用会被从栈中弹出, 所以它就能在下一次GC执行时被回收了。

阅读全文

本文共计926个文字,预计阅读时间需要4分钟。

Java中的弱引用究竟是什么性质的数据结构?

在Java中,对象obj被创建时,其存储在堆内存中。当垃圾回收器运行时,若发现没有对obj的引用指向,则会回收obj占用的堆内存。一个对象被回收,必须满足以下两个条件:(1)没有对任何的引用;(2)没有对直接的引用。

Java里一个对象obj被创建时,被放在堆里。当GC运行的时候,发现没有任何引用指向obj,那么就会回收obj对象的堆内存空间。

换句话说,一个对象被回收, 必须满足两个条件:

Java中的弱引用究竟是什么性质的数据结构?

(1)没有任何引用指向它

(2)GC被运行。

在实际开发中,我们可以通过把所有指向某个对象的referece置空来保证这个对象在下次GC运行的时候被回收,类似下面:

Object c = new Car(); c=null;

但是,这样做是一件很繁琐并且违背GC自动回收原则的事。对于简单的情况, 手动置空是不需要程序员来做的, 因为在java中, 对于简单对象, 当调用它的方法执行完毕后, 指向它的引用会被从栈中弹出, 所以它就能在下一次GC执行时被回收了。

阅读全文