内存泄漏和内存抖动检测

内存泄漏

  1. Profiler--确认数量并导出文件


    确认数量1.png
  2. 使用命令转换文件

hprof-conv heap-original.hprof heap-converted.hprof
  1. 使用Eclipse---MemoryAnalyzer打开文件


    GC可回收.PNG

4.打开柱状图 Histogram


柱状图3.PNG
  1. 进入QQLIVE


    柱状图3.PNG
  2. mege后进入界面找出泄漏点;并根据引用对象寻找代码


    引用对象5.PNG

7.无法使用正常方式处理,如置null或者取消注册等方法,可以用反射。

try{
            Field mCurRootViewField = InputMethodManager.class.getDeclaredField(attr);
            mCurRootViewField.setAccessible(true);
            //取对象
            Object mCurRootView=mCurRootViewField.get(im);

            if (null!=mCurRootView) {
                Context context=((View)mCurRootView).getContext();
                if(context==this){
                    //破坏GC链
                    mCurRootViewField.set(im,null);
                }
            }
        }catch(Exception e){
            e.printStackTrace();
        }

内存抖动

垃圾桶很多,且一段时间内的分配和回收数量很多。


内存抖动.PNG

你可能感兴趣的:(内存泄漏和内存抖动检测)