我必须假设以下方法不会泄漏内存:
public final void setData(final Integer p_iData)
{
data = p_iData;
}
Run Code Online (Sandbox Code Playgroud)
某人data的财产在哪里?
每次调用该方法时,a new Integer都将替换当前存在的data引用. 那么当前/旧数据发生了什么?
Java必须在幕后做点什么; 否则,每次分配对象时我们都必须将任何对象置零.
简单解释:
垃圾收集器会定期查看系统中的所有对象,并查看实时引用中不再可访问的对象.它释放了任何不再可达的对象.
请注意,您的方法根本不会创建新Integer对象.Integer例如,可以一次又一次地传递对同一对象的引用.
垃圾收集的现实比这复杂得多: