如何查找内存泄露
1、首先确定是否有内存泄露及哪个程序造成。
1.1、内存泄露已弹出out of memory对话框的情况。
这种情况很简单,直接看对话框就知道是哪个应用的问题了。然后再分析该应用是否是因为内存泄露造成的
out of memory对话框。
》中介绍的各种方法进行分析,确定是否有内存泄露以及是哪个进程造成的内存泄露。
2、生成hprof文件,用MAT进行分析。
生成hprof文件可以在DDMS选中进程点击窗口左上角的dump hprof file按钮来直接生成,也可以通过在程序加代码中来生成代码2:voidgenerateHprof(){String packageName=getApplicationInfo().packageName;
StringhpFilePath=/data/data/+packageName+/input.hprof;try{//Debug.dumpHprofData(/sdcard/input.hprof);Debug.
dumpHprofData
(hpFilePath);}catch(IOException e) {//TODOAuto-generated catch block
e.printStackTrace();}}建议使用代码生成hprof,然后使用《
Android内存泄露利器(hprof篇)》中的工具自动提取多个hprof文件,然后用MAT进行比较分析。在MAT导入.hprof文件以后,
MAT会自动解析并生成报告,点击
Dominator Tree
,并按Package分组,选择自己所定义的Package类,比较各个类在不同时期的RetainedHeap
,找出可疑类,然后选择该类,点右键,选中
show retained Set项,参看Retained Heap
的详细信息,进一步找出嫌疑项。
3、在代码中查找内存泄露。
根据在MAT找到的内存泄露信息,参照《
Android内存泄漏简介
》进一步在内存中查找内存泄露的原因并解决。
另外如果代码很简单,可以直接参照《
Android内存泄漏简介
》在内存中查找内存泄露的原因并解决。
若要确保您的应用程序正在泄漏内存,请将怀疑与多个小版本,一个循环中的代码,然后监视 $
专用和对于任何增加的内存的虚拟字节。监视以确保数专用字节和虚拟字节数不会不最终将保持相同,数字停止增加。如果没有内存会停止点不断增加,(例如,它不会不继续无限期地顺)
执行操作不会看到一个内存泄漏漏洞,但更有可能,您看到的增长缓存其最大大小。
如果您确定可以看出,内存泄漏之前使用 UMDH,请按照下列步骤操作:
安装的 UMDH 实用程序。
设置要包含系统 PATH 环境变量UMDH 的安装位置的文件夹。
将 _NT_SYMBOL_PATH 环境变量设置为Microsoft 符号服务器路径,以便 UMDH 可以找到调试符号文件。
UMDH
实用程序是附带的调试工具Windows 产品在下面的 Microsoft 网站:
http://www.microsoft.com/whdc/devtools/ddk/default.mspx (http://www.microsoft.com/whdc/devtools/ddk/default.mspx)
下载并安装该应用工具,然后将路径的系统设置环境变量,以在安装调试工具的路径。
Redis和Memcache的区别总结
区别:1、存储方式不同 memecache 把数据全部存在内存之中,断电后会挂掉,数据不能超过内存大小;redis有部份存在硬盘上,这样能保证数据的持久性,支持数据的持久化(笔者注:有快照和AOF日志两种持久化方式,在实际应用的时候,要特别注意配置文件快照参数,要不就很有可能服务器频繁满载做dump)。2、...
Web前端岗位面试题有哪些
36、DOM操作——怎样添加、移除、移动、复制、创建和查找节点?37、.call() 和 .apply() 的含义和区别?38、数组和对象有哪些原生方法,列举一下?39、JS 怎么实现一个类。怎么实例化这个类40、JavaScript中的作用域与变量声明提升?41、如何编写高性能的Javascript?42、那些操作会造成内存泄漏?43、JQuery的源码看过...
JAVA与.net的区别和各自优势?
而C++程序员可以转向C#,.Net代替他们处理这些操作后,内存泄露和其它bug出现的可能性将大大减少。拥有了被管理的代码,你可以访问.Net所有跨语言的能力。 7.平台独立 虽然.Net是为微软的操作系统创建的,但是微软的确为ECMA标准委员会发布了一部分框架和C#。比如,Mono project实现了Linux的.Net,包括架构和C#编译器。
iOS面试题有哪些
tempNumber);} 这段代码有什么问题.?会不会造成内存泄露(多线程)?在内存紧张的设备上做大循环时自动释放池是写在循环内好还是循环外好?为什么?17.内存管理的几条原则时什么?按照默认法则.那些关键字生成的对象需要手动释放?在和property结合的时候怎样有效的避免内存泄露?答:谁申请谁释放。
软件测试的目的是什么?
软件测试的目的是在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。软件测试已有了行业标准(IEEE\/ANSI ),1983年IEEE提出的软件工程术语中给软件测试下的定义是:“使用人工或自动的手段来运行或测定某个软件系统的过程,其目的在于检验它是否满足规定的...
C程序员怎么学习
十一、动态分配内存 1、动态分配的内存是保存在什么地方的?2、什么情况下使用动态分配内存?3、动态申请内存一定要释放,否则会内存泄露。你是否使用过内存检测工具?十二、函数 1、如何查看函数在内存中的地址?2、如何给一个函数指针赋值?3、你是否会定义可变入参函数 4、你是否可以区分函数的形参与...
Java与.net的优势缺点?
java和.net我都做过开发,说下个人感觉(仅为个人观点)。从框架上说,.net里分.net Webform和.net MVC。我认为这是两个截然不同的东西。.net MVC和java ssh我感觉差不多。好坏仁者见仁智者见智,我觉得.net MVC更方便一些,并且MVC的框架本身也开源了,也有很多不错的插件。.net Webform就不一...
redis和memcached的区别
对于像Redis和Memcached这种基于内存的数据库系统来说,内存管理的效率高低是影响系统性能的关键因素。传统C语言中的malloc\/free函数是最常用的分配和释放内存的方法,但是这种方法存在着很大的缺陷:首先,对于开发人员来说不匹配的malloc和free容易造成内存泄露;其次频繁调用会造成大量内存碎片无法回收重新利用,降低内存利用率...
redis和memcached的区别
对于像Redis和Memcached这种基于内存的数据库系统来说,内存管理的效率高低是影响系统性能的关键因素。传统C语言中的malloc\/free函数是最常用的分配和释放内存的方法,但是这种方法存在着很大的缺陷:首先,对于开发人员来说不匹配的malloc和free容易造成内存泄露;其次频繁调用会造成大量内存碎片无法回收重新利用,降低内存利用率...
Redis 和 Memcached 各有什么优缺点,主要的应用场景是什么样的_百度知...
对于像Redis和Memcached这种基于内存的数据库系统来说,内存管理的效率高低是影响系统性能的关键因素。传统C语言中的malloc\/free函数是最常用的分配和释放内存的方法,但是这种方法存在着很大的缺陷:首先,对于开发人员来说不匹配的malloc和free容易造成内存泄露;其次频繁调用会造成大量内存碎片无法回收重新利用,降低内存利用率...
仁炕松根: 内存泄漏指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况.内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,失去了对该段内存的控制,因而造成了内存的浪费.可以使用相应的软件测试工具...
盐山县15291811621: 如何查找内存泄露 - ?
仁炕松根: 这两天,在查找内存泄露的问题.因为内存都是放在memory pool里,所以不能通过valgrind等工具抓到那个地方分配的内存没有手动被释放.使用gcc,有一个方法去打包内存分配函数,而且不需要编辑已有的code并且不需要修改目标文件....
盐山县15291811621: 怎样发现内存泄露? - ?
仁炕松根: 一、内存泄漏的检查方法:1.ccmalloc-Linux和Solaris下对C和C++程序的简单的使用内存泄漏和malloc调试库.2.Dmalloc-Debug Malloc Library.3.Electric Fence-Linux分发版中由Bruce Perens编写的malloc()调试库.4.Leaky-Linux下检测...
盐山县15291811621: 如何检测内存泄漏?
仁炕松根: http://www.devdiv.com/forum.php?mod=viewthread&tid=87206&highlight=%C4%DA%B4%E6%D0%B9%C2%A9看看这个有没有帮助还有就是可以通过DDMS查看内存消耗情况
盐山县15291811621: 内存泄露有哪些方法定位,崩溃有哪些方法定位 - ?
仁炕松根: ios怎么查看内存泄露,有以下几种方法供大家参考: 1. 静态分析 2. 通过静态分析我们可以最初步的了解到代码的一些不规范的地方或者是存在的内存泄漏,这是我们第一步对内存泄漏的检测.当然有一些警告并不是我们关心的可以略过. 3. ...
盐山县15291811621: 系统测试中怎么确定内存泄露 - ?
仁炕松根: 是不是说没有一种内存检查工具能够在linux使用呢,也不是,像valgrind工具还是相当不错的.他的下载地址是下载一个valgrind3.2.3(tar.bz2)工具,按照里面的README提示,安装后就可以使用这个工具来检测内存泄露和内存越界等.这是一个...
盐山县15291811621: 如何测试一个软件是否内存泄漏,怎么测试?具体点,各位大侠们!!! - ?
仁炕松根: sIEve内存泄露测试软件--web测试
盐山县15291811621: Android中如何查找内存泄露 - ?
仁炕松根: 1、首先确定是否有内存泄露及哪个程序造成.1.1、内存泄露已弹出out of memory对话框的情况.这种情况很简单,直接看对话框就知道是哪个应用的问题了.然后再分析该应用是否是因为内存泄露造成的 out of memory对话框.》中介绍的各...
盐山县15291811621: 怎么测试android 内存泄露 - ?
仁炕松根: 如何查看内存泄露主要有2种方法借助工具,查看.借助adb命令来查看.【主要原理】借助工具来查看泄露的原因.详细实现方式【工具查看】常用工具有很多例如:1.功能强大PC端检测工具,如MemoryAnalyzer运行在PC端抓取...
盐山县15291811621: 如何在linux下检测内存泄漏 - ?
仁炕松根: 检测内存泄露主要有以下5种方法:1、在需要内存泄漏检查的代码的开始调用void mtrace(void) (该函数在头文件mcheck.h中有声明).mtrace为malloc等函数安装hook,用于记录内存分配信息.在需要内存泄漏检查的代码的结束调用void ...