Car car = new Car(22000,"silver");
WeakReference<Car> weakCar = new WeakReference<Car>(car);
car = null;
System.gc();
以上代码当gc后,weakCar.get() 返回null,说明Car对象已被回收,但是问题是,weakCar对象,在什么时间段会被回收?为了回收一个car对象又new了一个weakCar对象,是不是有点浪费??
Car car = new Car(22000,"silver");
WeakReference<Car> weakCar = new WeakReference<Car>(car);
car = null;
System.gc();
以上代码当gc后,weakCar.get() 返回null,说明Car对象已被回收,但是问题是,weakCar对象,在什么时间段会被回收?为了回收一个car对象又new了一个weakCar对象,是不是有点浪费??
8 回答6.5k 阅读
4 回答704 阅读✓ 已解决
2 回答3.4k 阅读
3 回答1.9k 阅读✓ 已解决
1 回答2.2k 阅读✓ 已解决
1 回答2.1k 阅读✓ 已解决
3 回答1.5k 阅读✓ 已解决
weakCar对象被回收的时机和普通的对象是一样的,也就是gc root不可达的时候
弱引用本身不大,但是被引用的对象可能不小,所以合理运用不算浪费