性能测试工具 Android 内存泄露 (1)—静态引用

Heyniu · September 14, 2016 · Last by securitytest replied at September 26, 2017 · 1456 hits

静态-ActivityManager-Activity-ClipboardManager

泄露图

问题排查

  • ArticleCommentListActivity搜索关键字ActivityManager >> 无果
  • 基类BaseActivity搜索ActivityManager >> 无果
  • 尝试查看引用链 >> 无果
  • 重新打开ArticleCommentListActivity >> 不作任何操作 >> 关闭页面 >> 无内存泄露
  • 回忆出现内存泄露的步骤 >> 执行过复制操作
  • 重试复制操作 >> 发现内存泄露
  • 定位源码

引用链

源码

case 1:
ClipboardManager clipboard = (ClipboardManager)
getSystemService(Context.CLIPBOARD_SERVICE);
/** 替换UBB标签 **/
String Text = TopicMatcherUtil.ReplaceLabel(commentContent);
clipboard.setText(String.valueOf(Text));
UIHelper.makeText(ArticleCommentListActivity.this, "复制成功");
break;

解决方案

Activity Context改为getApplicationContext()

case 1:
ClipboardManager clipboard = (ClipboardManager)
this.getApplicationContext().getSystemService(Context.CLIPBOARD_SERVICE);
/** 替换UBB标签 **/
String Text = TopicMatcherUtil.ReplaceLabel(commentContent);
clipboard.setText(String.valueOf(Text));
UIHelper.makeText(ArticleCommentListActivity.this, "复制成功");
break;

验证

再次验证,发现无内存泄露,收获18M内存

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 12 条回复 时间 点赞

不知道撒意思😂

#1楼 @lose 不理解什么?

加我微信seveniruby, 带你到咱们社区的技术微信群.

#3楼 @seveniruby 我们还有技术微信群?-。=

按理说你这么写简单的调clipboard应该不会出内存泄漏啊?
ClipboardManager clipboard 还干么了?
addPrimaryClipChangedListener还有类似这种的操作?

#6楼 @yangchengtest 没有了啊,全部代码在这里了

@heyniu 想不明白。。。。
这么说,我只能怀疑是setText有问题了。。。setText持有了context的引用,在完成后却没有释放。。。
这个控件没用过,就是看到扫一眼。很有可能不对。。。~~~

public void setPrimaryClip (ClipData clip)
Added in API level 11
Sets the current primary clip on the clipboard. This is the clip that is involved in normal cut and paste operations.
Parameters
clip The clipped data item to set.

public void setText (CharSequence text)
Added in API level 11
This method was deprecated in API level 11.

#8楼 @yangchengtest 那个引用链太长了 几十条没具体看到底那个引起的
下面这个是我自己写的应用里用的复制

@heyniu this.getApplicationContext()这个是取app启动的context,这个context在app死之前不会重新创建。。。所以你这么改肯定不会再有泄漏了,这个是肯定的。
我是觉得就算在普通的activity周期里面,不是很奇葩的引用链,应该也不会出问题。~我也是好奇心作怪,😄

#10楼 @yangchengtest 我也奇怪啊,那个引用链太长了 没全部点开,你看上面就知道了

Heyniu [Topic was deleted] 中提及了此贴 26 Sep 12:28
需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up