下面的这个Food类是否会因为有一个静态Spoon字段而导致无法被回收?如果是这样的话是否应该避免使用静态字段?
public class Food
{
static Spoon spoon = new Spoon();
public void Eat()
{
spoon.Eat();
}
}
------解决思路----------------------
static变量在软件整个生命周期内都存在,是不会被GC回收的。
不是类不被回收,类本身不占用内存,是类对象、静态类成员占用内存空间。
------解决思路----------------------
什么叫做 Food类被回收?被回收的都是对象而不是类。既然你知道Spoon类包含Food“类”而Spoon对象并不包含,结果就很清楚了。
------解决思路----------------------
能够被回收的是Food的对象
你所担心的那个spoon属性是静态的,静态属性属于的是Food类
对象和类的区别你总明白吧