Java 在哪里调用垃圾收集器的可能性最大?

Java 在哪里调用垃圾收集器的可能性最大?,java,garbage,Java,Garbage,我无法跟踪正在调用垃圾收集器的位置。plz帮助 class Garbage01 { public static void main(String args[]) { Garbage01 h = new Garbage01(); h.methodA(); /* Line 6 */ } Object methodA() { Object obj1 = new Object(); Object [] obj2 = new Object[1]; ob

我无法跟踪正在调用垃圾收集器的位置。plz帮助

class Garbage01
{ 
public static void main(String args[]) 
{
    Garbage01 h = new Garbage01(); 
    h.methodA(); /* Line 6 */
} 
Object methodA() 
{
    Object obj1 = new Object(); 
    Object [] obj2 = new Object[1]; 
    obj2[0] = obj1; 
    obj1 = null; 
    return obj2[0]; 
} 
}

methodA()中从未调用垃圾收集器


因为垃圾收集是在方法返回对对象的引用之后进行的。方法返回到第6行,没有用于存储返回值的引用。所以垃圾收集发生在第6行之后。

java中的垃圾收集被自动调用,它收集符合垃圾收集条件的对象

如果无法从任何活动线程或任何静态引用访问对象,则该对象有资格进行垃圾收集或GC。换句话说,如果对象的所有引用都为null,则可以说该对象有资格进行垃圾收集

循环依赖项不算作引用,因此如果对象A引用了对象B,而对象B引用了对象A,并且它们没有任何其他活动引用,则
对象A
B
都有资格进行
垃圾收集


因此,无法检查何时调用/调用垃圾收集器。

无法跟踪垃圾收集器被调用的位置。垃圾收集器将在它想要运行时运行。可以保证它会在某些情况下运行(在抛出OutOfMemoryError之前),但除此之外,您无法知道它何时运行,也无法强制它运行。调用垃圾回收器的最大机会在哪里完成
main()
@NoobUnChained
C:\Users\JohnChen\Desktop>java-verbose:gc-Garbage01
\n
C:\Users\JohnChen\Desktop>
不,最有可能的是垃圾收集器不会被调用@Sandeep vashisth:但是为什么在跟踪垃圾收集器的调用位置时需要帮助呢?也许您需要为您的问题添加更多的上下文—您正试图证明/解决的是什么。您可能可以说什么时候不会发生,但您肯定不能肯定地说什么时候会发生。此处不会调用垃圾收集器,因为在obj2[0]中维护并返回了对该对象的引用您可以说引用不会被垃圾回收,但我的观点是,您不能确切地说垃圾回收器何时运行。