我正在为我的公司清理一些C#代码,我注意到的一件事是构建此应用程序的承包商将对象引用设置为null.
例:
get {
Object o = new Object(); // create a new object that is accessed by the reference 'o'
try {
// Do something with the object
}
finally {
o = null; // set the reference to null
}
}
Run Code Online (Sandbox Code Playgroud)
据我所知,创建的对象仍然存在.有可能它现在无法访问,具体取决于是否有任何其他引用,但它仍然存在,直到GC到来并清理它.
有没有理由在最后一个块中有这个?在任何情况下,这可能会产生广告中的内存泄漏吗?
谢谢!
我正在开发一个小程序,它只是从服务器检索一些JSON,解析它,然后将值返回到屏幕.我在AsyncTask中执行此操作,但是onPostExecute(String result)会发出以下警告:MainActivity.RESTfulGET类型中的onPostExecute(String)方法从不在本地使用.
我不知道为什么我会收到这个警告,我已经通过谷歌的许多不同来源试图找到这个问题的答案,不幸的是我一直无法找到任何解决方案.
这是我的代码(请注意,解析器还没有完成,但我不需要任何帮助):
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.os.AsyncTask;
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity {
private RESTfulGET mTask;
Button bParseJSON;
TextView tvJSON;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
try {
Class.forName("android.os.AsyncTask");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} …
Run Code Online (Sandbox Code Playgroud) 我想知道什么时候引用(特别是在类级别定义的引用)超出.net Web应用程序的范围,以便更好地了解它们何时有资格进行垃圾回收.
目前我的代码如下所示:
public class SomeClass
{
Object object = new Object();
protected void Page_Load(object sender, EventArgs e)
{
// some code
}
}
Run Code Online (Sandbox Code Playgroud)
将对象超出范围的页面加载后(并有资格进行垃圾回收),或者这将是用户导航离开该页面后?
我通常使用PHP创建Web应用程序,所以我猜在页面加载完成后该对象符合GC条件,因为它不知道用户何时离开页面.