当我们这样写的时候:{ new A().test();}A的内存将在这个函数返回后被gc收集(我知道它可以收集,而不是现在)。问题是,jvm如何确保A的内存不会在test()执行期间被实现(我假设gc是一个独立的线程)。我认为编译器可能会将语句更改为: //cover it in a scope A temp = new A(); }
//outside the scope, temp is no longer stay in stack, so that A's memory can be collle