我在我的一个应用程序中遇到了一些奇怪的行为,在我的类的生命周期完成之前,我的一个类的对象(成员变量)被取消,显然导致空指针异常。
似乎在一段时间后发生(可能是由于高内存使用或内存泄漏)。
我知道GC不应该收集所引用的任何对象。但是,在内存不足的情况下,此规则是否仍然适用,并且将为GC提供引用的对象?
我已经敲了一个示例来演示我的代码模式:
提前致谢。
public class WebRequest implements Runnable {
private WebRequest _Request;
public WebRequest(WebRequest request)
{
_Request = request;
}
@Override
public void run()
{
DoSomething1();
DoSomething2();
}
private void DoSomething1()
{
String s = _Request.getAttribute(); //Works
//Do something else, few hundred milliseconds
}
private void DoSomething2()
{
String s = _Request.getAttribute(); //Results in NullPointerException
}
}