最近工作中,遇到了几个内存优化的问题,1.应用退出后,此应用进程保持了不少内存得不到释放,用工具强制gc也无法释放。2.应用进入某些页面瞬间请求分配内存过大。此两个问题对于有经验的开发者很容易猜测一个是内存泄露,一个是图片之类的资源问题。下面来写一个例子分析一下这两个问题
第一个例子是Volley加载图片的app,当此app退出时缓存释放问题
Application类
package demo.memory.com.memorydemo;
import android.app.Application;
import com.android.volley.RequestQueue;
import com.android.volley.toolbox.Volley;
public class MyApplication extends Application{
RequestQueue mRequestQueue;
private static MyApplication mInstance;
public static MyApplication getInstance(){
return mInstance;
}
@Override
public void onCreate() {
super.onCreate();
mInstance = this;
}
public RequestQueue getRequestQueue() {
if (mRequestQueue == null) {
mRequestQueue = Volley.newRequestQueue(this);
}
return mRequestQueue;
}
}
主Activity简单的跳转功能
package demo.memory.com.memorydemo;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void jump(View view){
Intent intent = new Intent(this,ShowImageActivity.class);
startActivity(intent);
}
}
加载图片的Activity
package demo.memory.com.memorydemo;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ImageView;
import com.android.volley.toolbox.ImageLoader;
public class ShowImageActivity extends Activity{
private