小编Cod*_*gel的帖子

有没有理由在finally块中将对象设置为null?

我正在为我的公司清理一些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到来并清理它.

有没有理由在最后一个块中有这个?在任何情况下,这可能会产生广告中的内存泄漏吗?

谢谢!

c#

9
推荐指数
2
解决办法
1567
查看次数

onPostExecute(String)方法从不在本地使用--AsyncTask

我正在开发一个小程序,它只是从服务器检索一些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)

android overriding android-asynctask

2
推荐指数
1
解决办法
3752
查看次数

页面加载后,对象是否有资格进行垃圾回收?

我想知道什么时候引用(特别是在类级别定义的引用)超出.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条件,因为它不知道用户何时离开页面.

c# asp.net garbage-collection

1
推荐指数
1
解决办法
40
查看次数