android 栏目编辑,android – 编辑文本导致内存泄漏

介绍:

我有一个应用程序具有以下结构:

ActionBar顶部(ActionBarSherlock)

ViewPagerIndicator下面(对于选项卡)

ViewPager(主机片段)

我有一个问题,我的一个碎片导致了相当大的内存泄漏.我将问题缩小到以下情况:

导致泄漏的片段只会在其onCreateView方法中夸大布局.这是通过以下方式完成的:

return inflater.inflate(R.layout.filter_auctions_fragment, container, false);

没有什么不寻常的在这里

布局文件只包括一个ScrollView,LinearLayout和两个EditText(包括更多通常的东西,但我把问题缩小到这些视图,使其变得简单).

现在用于添加片段的代码:

mTabsAdapter.addTab(tabName,ProblematicFragment.class);

mTabsAdapter是TabsAdapter的实例,它是扩展支持库的FragmentPagerAdapter的类.这是相当标准的,所以我不包括源码来保持这个问题尽可能短.

现在有趣的部分:

这是当我旋转我的设备来回转动几次时,堆会发生什么:

12-28 12:26:27.180: D/dalvikvm(18841): GC_CONCURRENT freed 530K, 7% free 10701K/11436K, paused 4ms+7ms, total 58ms

12-28 12:26:27.180: D/dalvikvm(18841): WAIT_FOR_CONCURRENT_GC blocked 24ms

12-28 12:26:28.270: D/dalvikvm(18841): GC_CONCURRENT freed 737K, 8% free 11048K/11964K, paused 4ms+5ms, total 53ms

12-28 12:26:29.510: D/dalvikvm(18841): GC_CONCURRENT freed 789K, 8% free 11464K/12436K, paused 5ms+5ms, total 42ms

12-28 12:26:30.640: D/dalvikvm(18841): GC_CONCURRENT freed 888K, 9% free 11919K/12984K, paused 4ms+5ms, total 52ms

12-28 12:26:31.810: D/dalvikvm(18841): GC_CONCURRENT freed 903K, 8% free 12421K/13500K, paused 3ms+8ms, total 58ms

12-28 12:26:33.800: D/dalvikvm(18841): GC_CONCURRENT freed 1092K, 9% free 13005K/14272K, paused 4ms+6ms, total 59ms

12-28 12:26:33.800: D/dalvikvm(18841): WAIT_FOR_CONCURRENT_GC blocked 20ms

12-28 12:26:36.000: D/dalvikvm(18841): GC_CONCURRENT freed 1355K, 11% free 13518K/15048K, paused 3ms+8ms, total 74ms

12-28 12:26:36.000: D/dalvikvm(18841): WAIT_FOR_CONCURRENT_GC blocked 19ms

12-28 12:26:38.110: D/dalvikvm(18841): GC_CONCURRENT freed 1450K, 11% free 14106K/15720K, paused 3ms+11ms, total 72ms

12-28 12:26:40.450: D/dalvikvm(18841): GC_CONCURRENT freed 1530K, 11% free 14807K/16516K, paused 2ms+15ms, total 75ms

12-28 12:26:40.450: D/dalvikvm(18841): WAIT_FOR_CONCURRENT_GC blocked 29ms

12-28 12:26:43.030: D/dalvikvm(18841): GC_CONCURRENT freed 1682K, 11% free 15591K/17452K, paused 3ms+10ms, total 66ms

12-28 12:26:43.030: D/dalvikvm(18841): WAIT_FOR_CONCURRENT_GC blocked 32ms

显然,内存泄漏.

是的,我知道它会导致从头开始重新创建活动,这就是我想要的,因为我有不同的横向和纵向模式的布局.不管怎样,它不应该导致内存泄漏.

我找到了这个问题的根源.这是我之前提到的两个EditText.一旦我从布局中删除它们并进行相同的测试(来回旋转).这些是我得到的GC消息:

12-28 12:21:41.270: D/dalvikvm(17934): GC_CONCURRENT freed 534K, 7% free 10853K/11576K, paused 3ms+7ms, total 44ms

12-28 12:21:42.560: D/dalvikvm(17934): GC_CONCURRENT freed 818K, 9% free 11113K/12108K, paused 11ms+9ms, total 95ms

12-28 12:21:44.680: D/dalvikvm(17934): GC_CONCURRENT freed 1036K, 10% free 11313K/12528K, paused 3ms+6ms, total 54ms

12-28 12:21:44.680: D/dalvikvm(17934): WAIT_FOR_CONCURRENT_GC blocked 15ms

12-28 12:21:47.420: D/dalvikvm(17934): GC_CONCURRENT freed 1089K, 10% free 11510K/12780K, paused 2ms+6ms, total 79ms

12-28 12:21:47.420: D/dalvikvm(17934): WAIT_FOR_CONCURRENT_GC blocked 39ms

12-28 12:21:50.200: D/dalvikvm(17934): GC_CONCURRENT freed 1317K, 12% free 11461K/12956K, paused 4ms+13ms, total 84ms

12-28 12:21:53.210: D/dalvikvm(17934): GC_CONCURRENT freed 1629K, 14% free 11148K/12956K, paused 3ms+7ms, total 47ms

12-28 12:21:55.580: D/dalvikvm(17934): GC_CONCURRENT freed 1056K, 13% free 11302K/12956K, paused 4ms+7ms, total 59ms

12-28 12:21:57.280: D/dalvikvm(17934): GC_CONCURRENT freed 1306K, 14% free 11200K/12956K, paused 5ms+5ms, total 82ms

12-28 12:21:59.420: D/dalvikvm(17934): GC_CONCURRENT freed 1035K, 12% free 11408K/12956K, paused 3ms+7ms, total 55ms

12-28 12:22:01.990: D/dalvikvm(17934): GC_CONCURRENT freed 1392K, 13% free 11352K/12956K, paused 4ms+9ms, total 54ms

12-28 12:22:01.990: D/dalvikvm(17934): WAIT_FOR_CONCURRENT_GC blocked 30ms

现在这就是我想看的!

为什么!?

有人可以告诉我为什么会发生这种情况吗?我想补充说,我没有在我的应用程序的任何地方保留对这些EditText对象的引用(我通常会这样做,但即使我删除了所有这些对象进行测试,泄漏仍然发生).

奖金 – MAT泄漏的屏幕截图:

你可以看到有16个Fragment AND Activity的实例,而应该只有一个.

编辑:

我注意到,当我手动添加片段在不同的活动(使用FragmentManager.beginTransaction())泄漏不会发生!我现在完全迷惑了…

EDIT2:

删除EditTexts的android:id属性修复它…但现在他们是没用的…

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/300134.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring 事物传播特性

Spring 事物传播特性 这是Spring官方的定义 一共有7种 摘自源码省略了一部分 public interface TransactionDefinition {int PROPAGATION_REQUIRED 0;int PROPAGATION_SUPPORTS 1;int PROPAGATION_MANDATORY 2;int PROPAGATION_REQUIRES_NEW 3;int PROPAGATION_NOT_SUPPORT…

6月,回忆我失去的爱情

6月,夏天早已到来 自4月起,我一直放荡着。这个我在上个文章里已提到,哈哈 放荡两个月后,我回想我自己的爱情 我想明白为什么我会失去自己的爱情,哈哈 终于明白了是为什么,其实失去的这样的简单 我承认我有错…

《你必须知道的.NET》第1章学习笔记

面向对象中几个最基本的概念:类,对象,继承,封装和多态。 对象的出生,只是完成了对必要字段的初始化,其他数据要通过后面的操作来完成,如:属性的赋值,通过方法获取必要信息…

利用 PGO 提升 .NET 程序性能

引子.NET 6 开始初步引入 PGO。PGO 即 Profile Guided Optimization,通过收集运行时信息来指导 JIT 如何优化代码,相比以前没有 PGO 时可以做更多以前难以完成的优化。下面我们用 .NET 6 的 nightly build 版本 6.0.100-rc.1.21377.6 来试试新的 PGO。PG…

不作死就不会死,盘点那些死于自己发明的发明家

全世界只有3.14 %的人关注了青少年数学之旅还有他们死于自己的发明发明呼吸器:缺氧死亡 1772年,法国人希厄尔弗莱米奈特发明了可用于潜水的循环式再呼吸器,让呼出的气体实现循环。这是世界上第一个自持呼吸装置。不幸的是,弗莱米奈…

CIO们对数据中心虚拟化心存的六大疑虑

本文摘自:[url]http://industry.ccidnet.com/art/3915/20070428/1072803_1.html[/url] 巴塞罗那超级计算中心 数据中心虚拟化正在势不可挡地迅猛发展,据IDC预测,到2009年,虚拟化市场将在全球范围内将增长150亿美元。有专家预言&am…

启动Tomcat一闪而过解决

打开apache-tomcat-6.0.32/bing/catalina.bat在首行添加: set JAVA_HOMEC:\Program Files\Java\jdk1.6.0_07 就可以了。

android gdb 远程调试工具,Android下用gdb远程调试办法

Host: ubuntuTarget: Android ICS1. 将gdbserver和gdbclient分别放入target和host。两者都可在android源代码的prebuilt目录下找到。2. 在Target上启动gdbserver,在adb shell中执行$ /path/to/gdbserver :1111--attach PID其中PID为想要debug程序的进程号&#xff0…

如何在Domino中使用文本文件注册用户

具体的步骤如下: 1。先用以下的格式创建一个文本文件(每个用户一行): ZhangSan;;;;passw0rd;e:\id\603server;zhangsan.id;603server/r6domain;;zhangsan.nsf;;;;;;;;;;;; LiSi;;;;passw0rd;e:\id\603server;lisi.id;603server/r6domain;;lis…

C# 对接微信支付时生成符合 RFC3339 标准的日期时间字符串

rfc3339 是一种包含时区信息的字符串标准格式。格式为YYYY-MM-DDTHH:mm:ssTIMEZONE,YYYY-MM-DD表示年月日,T出现在字符串中,表示time元素的开头,HH:mm:ss表示时分秒,TIMEZONE表示时区(08:00表示东八区时间&…

盘点那些世间顶级直男hhhhhh | 今日最佳

全世界只有3.14 % 的人关注了青少年数学之旅【1】【2】【3】【4】【5】【6】【7】【8】【9】

android的单选按钮xml语法,android 控件 单项选择(RadioGroup,RadioButton)

1、继承关系和子类:2、定义:RadioButton表示单个圆形单选框,而RadioGroup是可以容纳多个RadioButton的容器3、XML重要属性:4、重要方法:5、实战:布局文件android:layout_width"wrap_content"andr…

.net项目开发工具(v2.0)功能完善专帖

首先,感谢你对本软件的支持。如果你有好的建议和要求,请记录于此,谢谢! 原文:http://www.cnblogs.com/mrhgw/archive/2007/06/04/770278.html?Pendingtrue#Post

CVE(Common Vulnerabilities and Exposures通用漏洞披露)笔记

产生背景:目前实时入侵检测和漏洞扫描评估基于的主要方法还是“已知入侵手法检测”和“已知漏洞扫描”,即基于知识库的技术,因此决定一个IDnA(Intrusion Detection and Assessment 实时入侵检测和漏洞扫描评估)技术和产…

[006] 了解 Roslyn 编译器

维基百科对编译器的解释是:编译器是一种程序,它将某种编程语言编写的源代码(原始语言)转换成另一种编程语言(目标语言)。编译是从源代码(通常为高阶语言)到能直接被计算机或虚拟机执行的目标代码(通常为低阶语言或机器语言)的翻译过程。在 .NET 平台中&a…

arcengine 将地图文件保存为图片(包括各种图片格式)

1,最近做了个地图文件输出图片的功能,思想主要就是利用MapControl的ActiveView中的out方法: 2代码如下:欢迎交流指正 1 SaveFileDialog m_save new SaveFileDialog();2 m_save.Filter "jpeg图片(*…

这个让人看跪了的设计!实力证明,数学才是世界的最终boss!

全世界只有3.14 %的人关注了青少年数学之旅最近,有不少购买了年度数学艺术礼盒《数学之旅闪耀人类的54个数学家》的小伙伴,已经按捺不住内心的激动:但超模君秉承着“慢工出细活”的态度,多次亲自到工厂对扑克牌的细节进行把关&…

android 版本28 通知栏图标,【专题分析】应用图标、通知栏适配

# 应用图标适配## 新规范Android8.0开始,应用程序的图标分为了两层:前景层和背景层,前景用来展示应用图标的Logo,背景用来衬托应用图标的Logo,(背景层在设计的时候只允许定义颜色和纹理,但是不能定义形状)。…

win2000/xp/2003 错误代码

10009 0x2719 提供的文件句柄无效。 10013 0x271D 以一种访问权限不允许的方式做了一个访问套接字的尝试。 10014 0x271E 系统检测到在一个调用中尝试使用指针参数时的无效指针地址。 10022 0x2726 提供了一个无效的参数。 10024 0x2728 打开的套接字太多。 10035 0x2733 无法立…

[007] 详解 .NET 程序集

上一篇我们介绍了 Roslyn 编译器,我们知道,我们编写的 C#/VB 代码经过 Roslyn 编译器编译后会生成程序集文件。按照之前讲的 .NET 执行模型的顺序,这一篇我具体讲讲程序集。1什么是程序集我们编写的 C# 代码经过编译会生成 .dll 或 .exe 文件…