当我们这样写时: { new A().test(); } 这个函数返回后A的内存会被gc回收(我知道可以回收,现在不能回收)。问题是,jvm如何确保在test()执行期间不会实现A的内存(我假设gc是一个独立的线程)。我认为编译器可能会将语句更改为:
{
//cover it in a scope
{
A temp = new A();
temp.test();
}
//outside the scope, temp is no longer stay in stack, so that A's memory can be colllected
}
这只是一个猜想。顺便说一句,非常抱歉我的英语不好,请使用简单的语法(回答或解释),谢谢。