android 内存优化(二)内存泄漏
程序员文章站
2022-03-11 21:59:30
1.监测泄漏的方法1.Android Devices Monitor来监测内存泄漏操作步骤如下,就可以查看到数据了2.2.全部代码1.2.3.4.5.6.3.内存不泄漏情况1.操作与数据:操作:执行进入,退出,进入,退出……(回到第一个开始的界面)操作前数据操作后数据(Cause GC要多几次,而且要等一段时间,保证GC完成):问题:堆尺寸无明显变化:12.501----->12.5774.内存泄漏情况1.操作:进入-点击按钮-退出-进入-点击按钮-...
1.监测泄漏的方法
1.Android Devices Monitor来监测内存泄漏
操作步骤如下,就可以查看到数据了
2.adb命令的,但是我不会
2.全部代码
1.MainActivity
package com.kunminx.memoryoptimization.leak;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import androidx.appcompat.app.AppCompatActivity;
import com.kunminx.memoryoptimization.R;
public class MainActivity extends AppCompatActivity {
//内存泄漏retained size
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_memory_leak2);
}
public void change(View view) {
startActivity(new Intent(MainActivity.this, Main2Activity.class));
}
}
2.Main2Activity:
package com.kunminx.memoryoptimization.leak;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import com.kunminx.memoryoptimization.R;
import java.lang.ref.WeakReference;
//引用类型
public class Main2Activity extends AppCompatActivity {
//内存泄漏
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_memory_eak);
}
private class TestThread extends Thread{
@Override
public void run() {
super.run();
while (true) {
try {
Thread.sleep(1000*60*5);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
//private Handler handler=new Handler();
public void change(View view) {
TestThread testThread = new TestThread();
testThread.start();
}
@Override
protected void onDestroy() {
super.onDestroy();
System.gc();
}
}
3.内存不泄漏情况
1.操作与数据:
- 操作:
执行进入,退出,进入,退出……(回到第一个开始的界面) - 操作前数据
- 操作后数据(Cause GC要多几次,而且要等一段时间,保证GC完成):
问题:
堆尺寸无明显变化:12.501----->12.577
4.内存泄漏情况
1.操作:
进入-点击按钮-退出-进入-点击按钮-退出……进入-点击按钮-退出。
2.操作前
3.操作后
问题:
很明显,Heap Size(堆尺寸变大了):12.501------->16.095
4.问题分析:
6.遇到的问题
1.打不开Android Device monitor
关闭android studio,再打开android device monitor
本文地址:https://blog.csdn.net/sunweihao2019/article/details/110519406
上一篇: 计算给定整形数n对应二进制中1的个数(负数用补码表示)
下一篇: Java源码之Arrays