今天发现个有趣的现象, 点击DDMS Monitor的initiate gc按钮和调用System.gc的效果不同。 ”initiate gc“按钮的效果更明显, 即内存下降更多。 我在想这个”initiate gc“是怎么做到的???
PS: 代码调用gc实际上是给虚拟机发个信号, 并不能立刻执行gc; 而Android Studio的这个按钮会马上执行gc! 所有在检查内存泄漏后要点击“initate gc”按钮, 该按钮能释放不可达对象。
VS 在Activity的onDestory函数中显示触发gc。
@Override
protected void onDestroy() {
super.onDestroy();
Runtime.getRuntime().gc();
}
备注:Runtime.getRuntime.gc()和System.gc()可以理解为一个东西, 只是写法不同而已。
从二者的日志开始分析, 使用小米4手机、MIUI8、Android6.0系统测试。 点击“Init