如果Java垃圾收集的状态在别处使用,它会成为一个类吗
假设我创建了一个如果Java垃圾收集的状态在别处使用,它会成为一个类吗,java,memory-management,garbage-collection,Java,Memory Management,Garbage Collection,假设我创建了一个列表,它最终将由GCd生成。不过这次我把它放在一个类Foo中,旁边是Bar的一个实例Bar在Foo的构造函数中指定,该实例将稍后在程序中使用(即,它不会是GCd) 公共类Foo{ 酒吧; 列出一些清单; 公共Foo(酒吧、列表){ 这个.bar=bar; this.someList=someList; } } 请注意,Foo实例将不再使用——只使用Bar实例。Foo和someList是否为GCd?您的术语非常混乱。你根本不是在问GC类。您询问的是包含实例的集合。包含实例只有在没
列表
,它最终将由GCd生成。不过这次我把它放在一个类Foo
中,旁边是Bar
的一个实例Bar
在Foo
的构造函数中指定,该实例将稍后在程序中使用(即,它不会是GCd)
公共类Foo{
酒吧;
列出一些清单;
公共Foo(酒吧、列表){
这个.bar=bar;
this.someList=someList;
}
}
请注意,
Foo
实例将不再使用——只使用Bar
实例。Foo
和someList
是否为GCd?您的术语非常混乱。你根本不是在问GC类。您询问的是包含实例的集合。包含实例只有在没有对它的引用时才会被收集,并且,尽管有引用,它仍然维护自己对它所包含的任何内容的引用,因此它们也不能是GC-d。你把它放在后面。你似乎在说,Bar
引用的Bar
实例可以从其他地方访问。。。因此,它不符合垃圾收集的条件
然后,您似乎会问这是否会影响Foo
实例和List
实例是否被垃圾收集/何时被垃圾收集
实例不再可访问时将有资格进行垃圾收集李>Foo
实例不再可访问时有资格进行垃圾收集列表
- 假设从
实例到其他两个实例没有路径,那么条
是可访问的,这一事实不会使其他两个对象可访问条
可达性是通过跟随指针/引用来确定的。。。不向后。如果bar位于foo的方法中,并且将被使用,这是否意味着您必须调用foo.someMethod();?在这种情况下,将使用foo。将收集从GC根目录无法访问的任何对象,因此在您的情况下,
foo
和List
的实例都可以被引用collected@Pphoenix不,bar
也在其他对象中,并在那里使用(而不是在任何Foo
实例中)。
public class Foo {
Bar bar;
List<Double> someList;
public Foo(Bar bar, List<Double> someList) {
this.bar=bar;
this.someList=someList;
}
}