搜档网
当前位置:搜档网 › 如何检查内存泄漏

如何检查内存泄漏

如何检查内存泄漏
如何检查内存泄漏

如何检查内存泄漏检查内存泄漏工具BoundsChecker下载BoundsChecker教程

先说个下载地址吧:https://www.sodocs.net/doc/0b9024598.html,/source/1002260

https://www.sodocs.net/doc/0b9024598.html,/tools/downtools.asp?id=22

注册码就在压缩包的文本文档里面、之所以是6.01版的,因为它对VC++6支持的很爽

BoundsChecker 是一个Run-Time错误检测工具,它主要定位程序在运行时期发生的各种错误。BoundsChecker能检测的错误包括:

1))1、指针操作和内存、资源泄露错误,比如:

内存泄露;

资源泄露;

对指针变量的错误操作。

22、内存操作方面的错误,比如:

内存读、写溢出;

使用未初始化的内存。

33、API函数使用错误

BoundsChecker安装成功后,在你的VC++集成开发环境中,会多出了一个名为BoundsChecker的菜单,如下所示:

图3-1 BoundsChecker在VC++集成开发环境中添加的菜单

BoundsChecker 已经非常完好的集成到VC++集成开发环境中了。

使用BoundsChecker对程序的运行时错误进行检测,有两种使用模式可供选择。一种模式叫做ActiveCheck,一种模式叫做FinalCheck。下面分别进行介绍。

3.1 ActiveCheck

ActiveCheck是BoundsChecker提供的一种方便、快捷的错误检测模式,它能检测的错误种类有限,只包括:内存泄露错误、资源泄露错误、API函数使用错误。

要想使用ActiveCheck模式来检测程序的运行时错误,只需在VC++集成开发环境中打开BoundsChecker功能,然后从调试状态运行程序即可。此时ActiveCheck会在后台自动运行,随时检测程序是否发生了错误。下面说一下具体的使用步骤。

3.1.1 用ActiveCheck来检测错误

使用ActiveCheck的具体的操作步骤如下:

首先,在VC++集成开发环境中打开你要对其进行测试的程序,同时保证项目处于Debug编译状态下。

其次,确保VC++集成开发环境中[BoundsChecker/Integrated Debugging]菜单项和[BoundsChecker/Report Errors and Events]菜单项处于被选中的状态。只有这两项被选中,BoundsChecker才会在程序运行过程中发挥作用。

最后,在VC++集成开发环境中选择[Build/ Start Debug/Go]菜单命令,在Debug状态下运行程序,ActiveCheck也在后台开始运行了。

这时,就可以按照制定好的测试用例,对程序进行操作。凡是程序执行过的代码,如果存在错误,ActiveCheck就会记录下来。

有一个地方要说一下,在[BoundsChecker]菜单中有一项[Report Errors Immediately],如下图所示:

图3-2 关于[BoundsChecker / Report Errors Immediately] 菜单项

该菜单项对于ActiveCheck 模式,以及下面就要介绍的FinalCheck模式的作用是一样的,即:如果不选中该项,则BoundsChecker会记录程序运行过程中发现的各种错误,直到程序结束后再进行报告;当选中该菜单项时,在程序的运行过程中,一旦BoundsChecker发现错误,会马上弹出如下的对话框进行提示:

图3-3 错误报告对话框

下面按图中标注的数字序号解释一下对话框中各个按钮的功能:

按钮1:点击该按钮,则表示先暂时不理会这个错误,继续执行程序。

按钮2:点击该按钮,则会马上跳转到出现问题的代码行处。处理完问题后,点击[Build/ Start Debug/Go]菜单项,可以继续执行程序,进行检测。

按钮3:点击该按钮,则将该错误添加到被忽略的错误列表中去,当再次出现这个问题时,BoundsChecker将不会进行报告。

按钮4:点击该按钮,则立即终止程序的执行。

按钮5:点击该按钮,会显示当前内存的申请、使用情况。

按钮6:点击该按钮,会得到当前这个错误的帮助信息。

按钮7、8:这两个按钮与[BoundsChecker\Report Errors Immediately]和[BoundsChecker\ Report Errors and Event] 菜单命令的功能是完全一样的,在此不再赘述。

按钮9:点击该按钮,会显示/隐藏与该错误有关的函数调用堆栈情况,以及具体的出错代码行的位置。

是否选中[BoundsChecker/Report Errors Immediately]菜单项,完全取决于你自己的喜好,以及测试时的具体情况。如果你想要BoundsChecker在程序运行过程中实时向你汇报发现的错误,那么你就选中这个菜单项;如果想等到操作结束后,再对操作过程中BoundsChecker发现的错误统一进行分析,就不必选中这个菜单项。我在平常使用过程中更偏向于使用后一种。

3.1.2 分析错误

在你操作全部结束,退出程序后,

BoundsChecker 会显示一个所发现错误的列表。我们需要对列表中罗列的错误进行分析,来确定错误的原因和位置。

在错误检测结果列表中,罗列出了在程序的执行过程中ActiveCheck检测到的所有的内存泄露、资源泄露和API函数使用错误的相关信息。如下图所示:

图3-4 错误检测结果

在左边的窗口中,逐条列出了程序在内存、资源、API 函数使用上的问题,包括:该问题的种类,该问题发生的次数,如果是内存泄露,损失了多少内存,以及发生该问题的代码位置等等。当你用鼠标单击选中某一条记录时,在右边的窗口中会显示出与该条错误记录相对应的函数调用堆栈情况。当你用鼠标双击某一条错误记录时,会定位到引发该错误的源代码处。

好了,BoundsChecker在ActiveCheck模式下的使用方法至此介绍完了,是不是很简单?

在ActiveCheck模式下检测程序时,程序的运行速度基本不受影响,但其缺点是检测的错误种类有限,即只能检查出内存泄露错误、资源泄露错误、API函数使用错误。BoundsChecker 提供了另外一种检测错误的模式——FinalCheck,也就是我们在前面提到的BoundsChecker的第二种使用模式。 FinalCheck可以检测出程序中更多的错误。下面我们就对它进行介绍。

3.2 用 FinalCheck检测更多的错误

FinalCheck具有BoundsChecker提供的所有检错功能。FinalCheck 是ActiveCheck的超集,它除了能够检测出ActiveCheck能够检测出的错误,还能

发现很多 ActiveCheck 不能检测到的错误,包括:指针操作错误、内存操作溢出、使用未初始化的内存等等,并且,对于ActiveCheck能检测出的错误,FinalCheck能够给出关于错误更详细的信息。所以,我们可以把FinalCheck认为是ActiveCheck的功能增强版。我们付出的代价是:程序的运行速度会变慢,有时甚至会变的很慢。

要想在FinalCheck 模式下测试程序,不能使用VC++集成开发环境提供的编译连接器来构造程序,而必须要使用BoundsChecker提供的编译连接器来编译连接程序。当 BoundsChecker的编译连接器编译连接程序时,会向程序中插装一些错误检测代码,这也就是FinalCheck能够比ActiveCheck找到更多错误的原因。

下面就

介绍一下如何在FinalCheck模式下对程序进行测试:

1在VC++集成开发环境中打开你所要测试的项目。

2由于要使用BoundsChecker的编译连接器重新编译连接程序,所以我们为BoundsChecker独自构造一个文件夹。在VC++集成开发环境中,具体操作方法是:

A)点击[ Build/Configurations...]菜单命令。

B)在弹出的对话框中点击 Add 按钮。在Configuration 编辑框中添入你为BoundsChecker创建的文件夹的名称,这个名称是任意的,比如我们取名为BoundChecker。

C)在 Copy settings from组合框中选中XXX—Win32 Debug项,然后点击OK

按钮,接着点击Close按钮。

现在,我们已经为FinalCheck构造好了一个文件夹。

3 点击[Build/Set Active Configuration…] 菜单命令,选中你刚才为BoundsChecker建的文件夹,然后点击OK按钮。这样BoundsChecker编译连接程序时生成的中间文件、可执行程序,都会被放到该文件夹下。

4 选择[BoundsChecker/Rebuild All with BoundsChecker] 菜单命令,对程序重新进行编译连接,也就是在这时,BoundsChecker向被测程序的代码中加入了错误检测码。编译连接完成后, BoundsChecker会在你为BoundsChecker

构造的文件夹中生成可执行文件。

在FinalCheck模式下对程序进行检测的准备工作都已经做好,这时可以启动程序开始测试了,

操作步骤与在ActiveChecker模式下没什么区别。具体步骤如下:

1.确保VC++集成开发环境中[BoundsChecker/ Integrated Debugging]菜单

项和[BoundsChecker/Report Errors and Events]菜单项处于选中状态。

2.点击[ Build\Start Debug]菜单,选中“Go” 菜单项。程序开始在Debug

状态下运行。

3.按照你制定好的测试用例,对程序进行操作。

4.当BoundsChecker检测到了错误时,会弹出窗口向你汇报,你可以当时就

进行处理,也可以等到你的操作全部完成,退出程序之后再对列出的这些

错误进行分析。这完全取决于你是否选中了[BoundsChecker/Report

Errors Immediately] 菜单项。

5.退出程序后,BoundsChecker会给出错误检测结果列表。该错误列表与

ActiveChecker给出的错误列表的查看方法完全一样。只不过这个列表中

所报告的信息会更多、更详细一些。

好了,BoundsChecker在FinalCheck模式下的使用也介绍完了。ActiveChecker、FinalCheck这两种模式,比较而言各有长短。ActiveChecker 使用方便,只需在Debug状态下直接运行程序即可,并且程序的运行速度较快,但检测的错误种类有限;FinalCheck模式下,需要使用BoundsChecker的编译连接器重新编译连接生成可执行程序,并且程序的运行速度比较慢,但检测的错误种类、提供的错误相关信息要多于ActiveChecker。所以,何时使用何种模式,应根据当时的具体情况而定。

内存检测工具的使用教程

u启动WINDIAG内存检测工具的使用教程 按下回车将后,电脑会自动进行内存的检测,直到您按下“X”键或者是关闭电脑 windiag内存检测工具将会自动运行,在这里它会无限进行电脑内存检测,我们只要关注工具进行test5次以上检测即可,检测结果会显示在“results”和“pass”以及“cache”这三个位置在电脑检测内存的过程中,我们也可以看到检测是否成功和检测的进度; 上述过程就是如何运用U盘启动盘的内存检测WINDIAG工具对电脑内存进行检测。用户需要注意的是,WINDIAG工具会无限次循环检测内存,我们只需检测次数达到5次以上,按下“X”键或直接关闭电脑。******************************************************************************* u启动Memtest4.20内存检测工具使用教程 当我们按下回车键时系统便会自动进行内存检测,检测的时间大约会在2小时左右,请耐心等待。

现在u启动小编就内存检测的过程中的相关数值向大家详细说明一下: 上方的Pass:表示检测过程中的整体进度; Test:表示检测当前进度; 下方的WallTime:检测时长,大约会在2小时左右; Pass:进行内存检测的次数,经过这一次检测后,下次检测时这里的数值将会是“1”,并且每一次的检测都会累计上去。 Error ECC Errs:检测错误的次数和地点将会在此显示出来。 ******************************************************************************* u启动u盘启动物理内存检测memtest使用教程 物理内存检测memtest是一款可以对电脑内存进行精确检测的工具,在使用时需要关闭当前电脑中所有正在运行的程序,在进行测试时,建议至少运行20分钟,您运行的时间越长,结果越准确。如果拥有多个核心/处理器,可以运行多个副本MemTest分别测试它们之间的内存大小。下面就来看看如何使用这款工具吧。 首先,制作一个u启动u盘启动盘,我们可以从u启动官网下载u启动u盘启动盘制作工具制作一个启动u盘,具体可以参考“下载并安装u启动v6.1制作u盘启动盘教程”。 1、把制作好的u启动u盘启动盘插在电脑usb接口上,然后重启电脑,在出现开机画面时 用一键u盘启动快捷键的方法进入到启动项选择窗口,选择u盘启动,进入到u启动v6.1主菜单界面,选择【02】运行u启动win8pe防蓝屏(新机器)选项,按回车键确认选择,如下图所示:

Android开发内存泄漏及检查工具使用培训资料

Android 开发内存泄漏及检查工具使用培 训资料

目录 1内存泄露 (3) 1.1 内存泄露的概念 (3) 1.2 开发人员注意事项 (4) 1.3 Android(java)中常见的引起内存泄露的代码示例 (4) 1.3.1查询数据库没有关闭游标 (6) 1.3.2 构造Adapter时,没有使用缓存的convertView (6) 1.3.3 Bitmap对象不在使用时调用recycle()释放内存 (7) 1.3.4 释放对象的引用 (8) 1.3.5 其他 (9) 2内存泄露的分析工具 (9) 2.1 内存监测工具DDMS --> Heap (9) 2.2 内存分析工具MAT (Memory Analyzer Tool) (10) 2.2.1 生成.hprof文件 (10) 2.2.2 使用MA T导入.hprof文件 (11) 2.2.3 使用MA T的视图工具分析内存 (12)

1内存泄露 Android 应用程序开发以Java语言为主,而Java编程中一个非常重要但却经常被忽视的问题就是内存使用的问题。Java的垃圾回收机制(Garbage Collection 以下简称GC)使得很多开发者并不关心内存使用的生命周期,只顾着申请内存,却不手动释放废弃的内存,而造成内存泄露,引起很多问题,甚至程序崩溃。Android的虚拟机Dalvik VM和java虚拟机JVM没有什么太大的区别,只是在字节码上稍做优化,所以Android应用开发中同样会出现内存泄露的问题。而且由于Android智能平台主要用于嵌入式产品开发,可用的内存资源更加稀少,所以对于我们Android应用开发人员来说,就更该了解Android程序的内存管理机制,避免内存泄露的发生。 1.1 内存泄露的概念 在计算机科学中,内存泄漏(memory leak)指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,失去了对该段内存的控制,因而造成了内存的浪费。内存泄漏与许多其他问题有着相似的症状,并且通常情况下只能由那些可以获得程序源代码的程序员才可以分析出来。然而,有不少人习惯于把任何不需要的内存使用的增加描述为内存泄漏,严格意义上来说这是不准确的。 一般我们常说的内存泄漏是指堆内存的泄漏。堆内存是指程序从堆中分配的,大小任意的(内存块的大小可以在程序运行期决定),使用完后必须显式释放的内存。应用程序一般使用malloc,calloc,realloc,new等函数从堆中分配到一块内存,使用完后,程序必须负责相应的调用free或delete释放该内存块,否则,这块内存就不能被再次使用,我们就说这块内存泄漏了。 这里我们只简单的理解,在java程序中,如果已经不再使用一个对象,但是仍然有引用指向它,GC就无法收回它,当然该对象占用的内存就无法再被使用,这就造成内存泄露。可能一个实例对象的内存泄露很小,并不会引起很大的问题。但是如果程序反复做此操作或者长期运行,造成内存不断泄露,终究会使程序无内存可用,只好被系统kill掉。在以下情况,内存泄漏导致较严重的后果: * 程序运行后置之不理,并且随着时间的流失消耗越来越多的内存(比如服务器上的后台任务,尤其是嵌入式系统中的后台任务,这些任务可能被运行后很多年内都置之不理); * 新的内存被频繁地分配,比如当显示电脑游戏或动画视频画面时; * 程序能够请求未被释放的内存(比如共享内存),甚至是在程序终止的时候; * 泄漏在操作系统内部发生; * 泄漏在系统关键驱动中发生; * 内存非常有限,比如在嵌入式系统或便携设备中; * 当运行于一个终止时内存并不自动释放的操作系统(比如AmigaOS)之上,而且一旦丢失只能通过重启来恢复。

内存泄漏检查

内存泄漏检测方法 ?对于不同的程序可以使用不同的方法来进行内存泄漏的检查,还可以使用一些专门的工具来进行内存问题的检查,例如MemProof、AQTime、Purify、BundsChecker 等。 ?也可以使用简单的办法:利用Windows自带的Perfmon来监控程序进程的handle count、Virtual Bytes和Working Set 3个计数器。 Handle Count记录了进程当前打开的句柄个数,监视这个计数器有助于发现程序是否存在句柄类型的内存泄漏; Virtual Bytes记录了程序进程在虚拟地址空间上使用的虚拟内存的大小,Virtual Bytes一般总大于程序的Working Set,监视Virtual Bytes可以帮助发现一些系统底层的问题; Working Set记录了操作系统为程序进程分配的内存总量,如果这个值不断地持续增加,而Virtual Bytes却跳跃式地增加,则很可能存在内存泄漏问题。 堆栈内存泄漏 ?堆栈空间不足会导致在受托管的情况下引发StackOverflowException类型的异常,线程泄漏是堆栈内存泄漏的其中一种。线程发生泄漏,从而使线程的整个堆栈发生泄漏。 ?如果应用程序为了执行后台工作而创建了大量的工作线程,但却没有正常终止这些线程,则可能会引起线程泄漏。 一个堆栈内存泄漏的例子: private void button1_Click(object sender, EventArgs e) { // 循环启动多个线程 for (int i = 0; i < 1500; i++) { Thread t = new Thread(new ThreadStart(ThreadProc)); t.Start(); } } static void ThreadProc() { Console.WriteLine("启动Thread #{0}

内存泄露测试方法

如何测试客户端软件的内存泄露客户端软件包括C/S系统的客户端和B/S系统中的客户端控件,当用户使用客户端软件时,如果发现我们的软件会吃内存,那是很丢面子的事,有哪些好的测试方法呢?希望大家能踊跃提出自己的看法。 会员huior的精彩回答:如何发现客户端软件中的内存泄露?我的看法是:检测内存泄漏的问题应该尽早进行,它绝不应该是系统测试时的主要目标。也就是说,检查是否存在内存泄漏,应该从编码时就要考虑,单元测试和集成测试时要重点检查。如果前期没有考虑,等到了系统测试才想起检查或者才发现泄漏,为时已晚,此时再去定位泄漏的位置,太难太难了,它可能会让你的交付日期delay不确定的时间。 最近看了一些自动错误预防(AEP)的理论,我深受启发。作为测试人员的我们,从“发现错误”转变到“帮助开发人员预防错误”,这将是一个巨大的转变。所以说,下面我的答案中的第一点,我先说如何预防内存泄漏的问题,然后再讲如何发现。如何在开发过程中有效预防内存泄漏? 第一步:遵循“好”的编程规则“好”的编程规则是各位前辈经验和教训的集合,好的编程规则堪称开发者的“圣经”。遵循统一的编程规则,可以让开发新手少走好多弯路,可以让项目整体的质量维持一个起码的“质量底线”。有关内存泄漏方面的规则主要是“内存管理”方面的,举几个简单的,如下x用malloc或new申请内存之后,立即检查指针值是否为NULL(防止使用指针值为NULL的内存),×动态内存的申请与释放是否配对(防止内存泄漏),x malloc 语句是否正确无误?例如字节数是否正确?类型转换是否正确×是否出现野指针,例如用free或delete释放了内存之后,忘记将指针设置为NULL。 第二步:积极主动检测“内存泄漏”,严格遵循好的编程规则,可以让程序员在代码中尽量少的引入bug,但一旦不小心引入了,怎么办?这就要求我们在单元测试和集成测试中严格把关。在这个阶段,单靠程序员或者测试员通过“代码走查”的方式检查内存泄漏,客户的实践和我的经验告诉我,这是不切实际的,无论效率还是时间。如果能够借助于一些专业的工具的话,情况可能就不一样了。 如果你的程序是用Visual C++ 6.0开发,那么Numega的BoundsChecker将是你检测“内存泄漏”最好的选择,如果是Visual C++.NET,可以试一下Compuware的DevPartner。如果你的程序基于Unix或者Linux平台,使用C或者C++,可以考虑一下开源的工具valgrind,我的朋友跟我说,它在一定程度上比Rational的Purify更出色。上面的工具都要求程序能够动态运行起来,而且测试用例需要你自己准备。 如果你正处于单元测试或集成测试阶段,程序代码量已经足够大,而且还不能够动态运行,要尽早检测代码中的“内存泄漏”问题,该怎么办?此时你可以试用一下目前最新的静态分析技术:×它不要求代码能够动态运行,×也不需要你来编写测试用例,×只需要代码能够正常编译,就可以发现代码只有在执行过程中才出现的错误,当然也包括内存泄漏。 这方面的工具有Klocwork的K7,Coverity的SQS,以及C++test中的BugDetective,其中最“物美价廉”的就是c++test的BugDetective。 如何发现客户端软件的“内存泄漏”?如果开发过程中已经按照我上面提到的去做,相信发布后的程序存在“内存泄漏”的可能性几乎为零。如果开发过程已经到了后期,系统测试已经开始做了,还要发现内存泄漏,这个时候我希望你能够拿到源代码。如果有源代码,你还可以考虑第二步,借助专业的工具协助,虽然可能效果不一定特别理想,但总比下面我提到的方法更好一些。 当然作为测试人员,通常会碰到“需要在系统测试阶段检测是否有内存泄漏,而且没有

几个内存泄漏的例子

几个内存泄漏的例子 ?new和delete要成对使用 ?new和delete要匹配 经常看到一些C++方面的书籍中这样提及到内存泄漏问题,这样的说法的意思是比较明白,但对于初学C++程序员还是很难掌握,所以下面举几个反面的例子,希望对大家有帮助。 例一:错误处理流程中的return导致的内存泄漏 bool MyFun() { CMyObject* pObj = NULL; pObj = new CMyObject(); … if (…) return false; … if(…) return false; … if (pObj != NULL) delete pObj; return true; } 注意:红色字体部分的return之前没有释放pObj,导致内存泄漏。 例二:exception改变了程序的正常流程,导致内存泄漏 情况1: HRESULT MyFun() { HRESULT hr = S_OK; try { CMyObject* pObj = NULL; pObj = new CMyObject(); … if (…) { hr = E_FAIL; throw hr; } … if(…) {

hr = E_FAIL; throw hr; } … if (pObj != NULL) delete pObj; } catch (HRESULT& eHr) { } return hr; } 情况2: void OtherFun() // 可能是自己写的其他函数; // 也可能是其他人写的函数; // 也可能是系统的API; { … if(…) throw exception; … } bool MyFun() { CMyObject* pObj = NULL; pObj = new CMyObject(); … OtherFun(); … if (pObj != NULL) delete pObj; return true; } 注意:上面的两种情况中的throw行为将导致程序的正常流程,一旦有throw的动作发生,pObj对象将不会被正确释放(delete)。 例三:忘记释放系统API创建的资源,导致内存泄露 bool CMyClass::MyFun() { HANDLE hHandle = CreateEvent(NULL,FALSE,TRUE,NULL); … if (…)

微软极品Sysinternals Suite工具包使用指南

微软极品Sysinternals Suite工具包使用指南 2010-6-26 10:00:13 编辑:软媒- 笨笨人气:11430次评论(8) Windows7之家(https://www.sodocs.net/doc/0b9024598.html,):微软极品Sysinternals Suite工具包使用指南 为什么软媒小编把Sysinternals Suite冠以极品二字?其实从07年Vista之家开始运行的时候,就推荐过这套软件10几次。被微软官方收购的这套软件包,确实有强悍的过人之处,软媒在开发魔方和Windows7优化大师的时候,也借鉴学习了这套软件的很多功能和思想。 今天,软媒小编把这套工具包里面的每个实用软件都整理出来,按照名称首字母排序,点击每个蓝色标题链接都可以转到微软的对应官方页面,有对这些工具包的直接下载地址和更详尽的用法。因为每个软件几乎都可以长篇大论的介绍,所以,在此就只做简介和罗列,希望能够对大家有所帮助。 每个软件都可以单独下载,当然更建议直接下载他们的集成版——Sysinternals Suite 系统工具套装。其实,这套工具包的下载地址几乎是常年不变的,基本都保持在10M大小,下载地址大家可以记住:https://www.sodocs.net/doc/0b9024598.html,/Files/SysinternalsSuite.zip。 好吧,下面是列表,都是中文说明。 一、各工具简介和微软官方网页 AccessChk 为了确保创建安全的环境,Windows 管理员通常需要了解特定用户或用户组对文件、目录、注册表项和Windows 服务等资源具有哪种访问权限。AccessChk 能够通过直观的界面和输出快速回答这些问题。 AccessEnum 这一简单但强大的安全工具可以向您显示,谁可以用何种访问权限访问您系统中的目录、文件和注册表项。使用此工具可查找权限漏洞。 AdExplorer Active Directory Explorer 是一个高级的Active Directory (AD) 查看器和编辑器。

Js内存泄漏及解决方案

在IE下的JS编程中,以下的编程方式都会造成即使关闭IE也无法释放内存的问题,下面分类给出: 1、给DOM对象添加的属性是一个对象的引用。范例: var MyObject = {}; document.getElementById('myDiv').myProp = MyObject; 解决方法: 在window.onunload事件中写上: document.getElementById('myDiv').myProp = null; 2、DOM对象与JS对象相互引用。范例: function Encapsulator(element) { this.elementReference = element; element.myProp = this; } new Encapsulator(document.getElementById('myDiv')); 解决方法: 在onunload事件中写上: document.getElementById('myDiv').myProp = null; 3、给DOM对象用attachEvent绑定事件。范例: function doClick() {} element.attachEvent("onclick", doClick); 解决方法: 在onunload事件中写上: element.detachEvent('onclick', doClick); 4、从外到内执行appendChild。这时即使调用removeChild也无法释放。范例: var parentDiv = document.createElement("div"); var childDiv = document.createElement("div"); document.body.appendChild(parentDiv); parentDiv.appendChild(childDiv); 解决方法: 从内到外执行appendChild: var parentDiv = document.createElement("div"); var childDiv = document.createElement("div"); parentDiv.appendChild(childDiv);

Linux下利用Valgrind工具进行内存泄露检测和性能分析

Linux下利用Valgrind工具进行内存泄露检测和性能分析 [日期:2012-06-25] 来源:Linux社区作者:yanghao23 Valgrind通常用来成分析程序性能及程序中的内存泄露错误 一 Valgrind工具集简绍 Valgrind包含下列工具: 1、memcheck:检查程序中的内存问题,如泄漏、越界、非法指针等。 2、callgrind:检测程序代码的运行时间和调用过程,以及分析程序性能。 3、cachegrind:分析CPU的cache命中率、丢失率,用于进行代码优化。 4、helgrind:用于检查多线程程序的竞态条件。 5、massif:堆栈分析器,指示程序中使用了多少堆内存等信息。 6、lackey: 7、nulgrind: 这几个工具的使用是通过命令:valgrand --tool=name 程序名来分别调用的,当不指定tool 参数时默认是 --tool=memcheck 二 Valgrind工具详解 1.Memcheck 最常用的工具,用来检测程序中出现的内存问题,所有对内存的读写都会被检测到,一切对malloc、free、new、delete的调用都会被捕获。所以,它能检测以下问题: 1、对未初始化内存的使用; 2、读/写释放后的内存块; 3、读/写超出malloc分配的内存块; 4、读/写不适当的栈中内存块; 5、内存泄漏,指向一块内存的指针永远丢失; 6、不正确的malloc/free或new/delete匹配; 7、memcpy()相关函数中的dst和src指针重叠。 这些问题往往是C/C++程序员最头疼的问题,Memcheck能在这里帮上大忙。 例如: #include #include #include void test()

使用 .Net Memory Profiler 诊断 .NET 应用内存泄漏(方法与实践)

使用 .Net Memory Profiler 诊断 .NET 应用内存泄漏(方法与实践) 文章分类:.net编程 关键字: memory leak, .net, .net memory profiler, https://www.sodocs.net/doc/0b9024598.html, 做过应用诊断与优化的朋友都知道内存泄漏和带来的危害,对这种情况的分析和定位一般会比较困难,尤其在 .NET/Java 应用中,隐式的堆内存管理以及托管对象间纷繁复杂的引用关系,使分析和定位问题更加复杂。本文以我的了解,尽量说明了: 1.一种对 .NET/Java 托管内存类应用的内存泄漏分析和诊断方法; 2.使用 .Net Memory Profiler 工具对一个真实 https://www.sodocs.net/doc/0b9024598.html, 应用中存在内存 泄漏问题的分析、诊断实践过程作为示例。 本文包括以下问题、不足: 1.本文以我的现有理解写成,尤其是“方法”相关的内容,每个人在不同情 况下会有不同的方式; 2.不是 .Net Memory Profiler 工具的全面讲解,实践中所涉及的功能仅是 为了定位这里 https://www.sodocs.net/doc/0b9024598.html, 应用中的问题。可参见 .Net Memory Profiler 文档 。 .NET/Java 托管内存类应用的内存泄漏分析和诊断 方法 首先是些科普知识,理解的兄弟请自行快速跳过。 在托管内存管理中,“泄漏”意义不同与传统 Native 应用中的忘记显式释放(delete/delete[] 等)不同,当然对于非托管资源之类(如句柄等)还是需要在 Finalize (析构方法等同于 Finalize)方法中显式释放的,在托管内存管理中“泄漏”对象实例指的是,由于与 Root 对象集中的对象存在本应断开的引用关系,而让 GC 线程认为该对象还被使用,因而不能被释放,尽管其不再会被使用。决大部分情况下,由于应用(程序员)认为该对象不会存在了,而在再次使用时,又在托管堆中再次创建了该对象实例,可以想象这样的

VS2005内存泄漏检测方法

VS2005内存泄漏检测方法 2010-03-09 09:13 247人阅读评论(0) 收藏举报VS2005内存泄漏检测方法 非MFC程序可以用以下方法检测内存泄露: 1.程序开始包含如下定义: view plaincopy to clipboardprint? 1. #ifdef _DEBUG 2. #define DEBUG_CLIENTBLOCK new( _CLIENT_BLOCK, __FILE__, __LINE__) 3. #else 4. #define DEBUG_CLIENTBLOCK 5. #endif // _DEBUG 6. #define _CRTDBG_MAP_ALLOC 7. #include 8. #include 9. #ifdef _DEBUG 10. #define new DEBUG_CLIENTBLOCK 11. #endif // _DEBUG

2.程序中添加下面的函数: view plaincopy to clipboardprint? 1. _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF|_CRTDBG_LEAK_CHECK_DF);

1. #ifdef _DEBUG 2. protected: 3. CMemoryState m_msOld, m_msNew, m_msDiff; 4. #endif // _DEBUG 1. #ifdef _DEBUG 2. m_msOld.Checkpoint(); 3. #endif // _DEBUG 4. 5.

三种优秀的内存测试软件用法

(二)RAM Stress Test(RST)内存测试软件 Data Bus 数据总线 工厂检测内存条质量的软件Ram Stress Test,只要有一丁点问题,都能检查出来,推荐大家使用,各位一定都碰到过,提示内存不能为READ,或者WRITTEN的情况,很多时候都是软件问题,要解决他首先检查内存条的质量,然后再从软件去找问题。这个软件是最专业的,比那个MEMREST还好,只需要检查一边,好就是好,坏的就是坏的。这个软件确实很好,内存坏的话会显示红色,并且报警。但是只能检测一代内存,二代内存就需要微软的检测工具了。Ram Stress Test是美国Ultra-X公司旗下的一个专业记忆体测试程式,是专门给系统生产厂商出机前用的测试程式,他其实是从其他的产品独 过他的测试几乎就能应付大部分的记忆体问题,所以是非常好用的一个测试工具!! 使用非常简易,只要设定为软碟开机就行了,他是一个独立开发的系统,没有依附任何作业系统,相容于x86系列,只要BIOS认的到的容量他都能测!!发现ATS 选项错误,在BIOS 中,记忆体选项设成Auto时,记忆体的CL=2,改成Manual,自设CL=时,上述选项才能通过。 程序执行后,第一选项是测试物理内存中基本内存地址(<640K),第二项是扩展内存地址,第三项是测试你CPU的L2 cache。 ☆可以测试SD及DDR内存。 ☆ 依次代表内存条的8颗颗粒。

从左到右横着数:0-7代表第1颗粒区域、8-F代表第2颗粒、0-7代表第3颗粒、8-F代表第4颗粒、0-7代表第5颗粒代、8-F代表第6颗粒、0-7代表 第7颗粒、8-F代表第8颗粒 ☆点不亮内存的测试方法——很多内存短路或者颗粒损坏后都不能点亮,点不亮的可以用一根好的内存去带动它(可解决部分点不亮问题) 。必须SD的带SD的,DDR的带DDR的。本软件会自动跳过好的去检测坏的那根。 ☆发现ATS 选项错误,在BIOS中,记忆体选项设成Auto时,记忆体的CL=2,改成Manual,自设CL=时,上述选项才能通过。 ☆程序执行后,第一选项是测试物理内存中基本内存地址(<640K),第二项是扩展内存地址,第三项是测试CPU的L2 cache。 RAM测试软件说明书 )UX版 闪动的一排测试数字代表内存8颗粒的测试情况。 从左至右,0-7代表第一区域,8-F代表第二区域;0-7代表第三区域,8-F代表第四区域;……依次代表内存条的8颗颗粒。 ⒈DDR8位与16位的单面测法: ⑴. 0-7(1 )区域如果出现乱码,代表这根DDR内存条的第1颗粒已经损坏 ⑵. 8-F(2 )区域如果出现乱码,代表这根DDR内存条的第2颗粒已经损坏 ⑶. 0-7(3 )区域如果出现乱码,代表这根DDR内存条的第3颗粒已经损坏 ⑷. 8-F(4 )区域如果出现乱码,代表这根DDR内存条的第4颗粒已经损坏 ⑸. 0-7(5 )区域如果出现乱码,代表这根DDR内存条的第5颗粒已经损坏 ⑹. 8-F(6 )区域如果出现乱码,代表这根DDR内存条的第6颗粒已经损坏 ⑺. 0-7(7 )区域如果出现乱码,代表这根DDR内存条的第7颗粒已经损坏 ⑻. 8-F(8 )区域如果出现乱码,代表这根DDR内存条的第8颗粒已经损坏 注意DR的颗粒排列循序是-8 ⒉如果你是128M的双面DDR内存,如以上显示界面图: 1-16M ------------------------------------------------------------------------------------------------------------ 16-32M ------------------------------------------------------------------------------------------------------- 32-48M ------------------------------------------------------------------------------------------------------------ 48-64M------------------------------------------------------------------------------------------------------------- 从1M到64M的上面的4根虚线上出现乱码的话,说明这根内存的的第一面的颗粒有问题(判断哪个颗粒的好坏按照以上的说明) 64-80M ------------------------------------------------------------------------------------------------------------ 80-96M ------------------------------------------------------------------------------------------------------- 96-112M------------------------------------------------------------------------------------------------------------ 112-128M---------------------------------------------------------------------------------------------------------- 从64M到128M的上面的4根虚线上出现乱码的话,说明这根内存的的第二面的颗粒有问题(判断哪个颗粒的好坏按照以上的说明) 注意:在内存的PCB板上的两边标着1与92的代表第一面,93与184的代表第二面。1-128M 的8根虚线是用来区分两面区域的作用. ⒊SD的8位与16位的单面测法: ⑴. 0-7(1)区域如果出现乱码,代表这根SDR内存条的第8颗粒已经损坏 ⑵. 8-F(2)区域如果出现乱码,代表这根SDR内存条的第4颗粒已经损坏 ⑶. 0-7(3)区域如果出现乱码,代表这根SDR内存条的第7颗粒已经损坏 ⑷. 8-F(4)区域如果出现乱码,代表这根SDR内存条的第3颗粒已经损坏 ⑸. 0-7(5)区域如果出现乱码,代表这根SDR内存条的第6颗粒已经损坏

微软 软件测试

微软的测试 “很多人都认为微软是一家软件开发公司, 而事实上,我们是一家软件测试公司”。

?微软的软件测试80%-90%都是自动化的。(所谓自动化,就是由测试工程师写出测试程序来运行测试 案例,而并非人们所想象的人工点、点、点的那种测试 方式。) ?每个产品的测试都包含了基本的测试,如功能测试、压力测试、代码覆盖率校验、插入测试、与其他产品交互的测试,还有全球化和本地化测试。在测试用例上,几乎永远是越多越全面越好。

?测试Windows XP操作系统某项目时,仅对几个DLL文件的测试就写了两千多个测试用例。 ?微软的测试工具基本上都是自己开发的,虽然商业性比较差,但对产品的针对性很强。除了常用的十种左右的测试工具外,往往需要测试人员针对项目开发很多测试工具。

一、微软的测试人员 微软的软件测试人员分为两类: 1.测试工具软件开发工程师(SDE/T) Software Development Engineer in Test:负责写测试工具代码,并利用 测试工具对软件进行测试;或者开发测试工具为软件测试工程师服务。产品开发后的性能测试(Performance Test)、提交测试(Check-in Test)等 过程,都有可能要用到SDE/T 开发的测试工具。 由于SDE/T和SDE 的工作都是写代码,具有相通的地方,所以两者之间互相转换的情况比较多。但需注意的是,两者写出来的代码用途是不一样的,SDE 写的是产品的代码,而SDE/T 写的代码只用于测试产品。 2.软件测试工程师(STE) Software Test Engineer:负责理解产品的功能要求,然后对其进行测试,检查软件有没有错误(Bug),决定软件是否具有稳定性,并写出相

microsoftoffice诊断的结果

microsoftoffice诊断的结果 Microsoft Office 诊断的结果本页介绍您刚刚运行的Microsoft Office 诊断的结果。您还可能会看到有关如何提高计算机和2007 Microsoft Office system 安装运行状况的建议。 注释可以将此页打印出来或标记为书签以供将来参考,这将十分有用。 诊断结果 Microsoft Office 诊断未发现任何问题。 安装程序诊断—文件损坏或文件被更改 安装程序诊断修复了Microsoft Office 安装的问题。现在您的Microsoft Office 程序应该可以正常工作。 如果Microsoft Office 程序仍然会崩溃,则问题的根源可能是硬件故障或硬件配置问题。请查看磁盘和内存诊断的结果,以确定是否是硬件故障影响了 2007 Office 版本的安装。 安装程序诊断—缺少媒体 安装程序诊断由于未找到有效的源媒体而未能完成。可能缺少本地安装源,或者用于安装Microsoft Office

的原始源媒体对于修复过程不可用。您可能需要提供原始源媒体,此诊断测试才能成功运行。2007 Office 版本的有效源媒体包括: 2007 Office 版本安装CD 计算机供应商提供的安装盘或修复CD 与2007 Office 版本网络安装点的连接 在获得对有效源媒体的访问后,请再次运行Office 诊断。 磁盘诊断—预测到硬盘故障 硬盘的自监控、分析与报告技术(SMART) 功能已发现错误,指示硬盘可能要出现故障。SMART 是某些磁盘驱动器制造商提供的一种功能,可以预先通知用户硬盘存在潜在故障。Microsoft Office 程序不稳定可能是由这些硬盘驱动器错误引起的。 注释此结果可能表示存在严重问题,但某些硬盘可能会不准确地报告结果。 建议您执行下列操作: 立即备份您的重要数据。 检查其他诊断的结果,并按照说明进行操作来解决其他诊断报告的任何问题。解决了这些问题后,再次运行Microsoft

内存泄露检测工具

1. ccmalloc-Linux和Solaris下对C和C++程序的简单的使用内存泄漏和malloc调试库。 2. Dmalloc-Debug Malloc Library. 3. Electric Fence-Linux分发版中由Bruce Perens编写的malloc()调试库。 4. Leaky-Linux下检测内存泄漏的程序。 5. LeakTracer-Linux、Solaris和HP-UX下跟踪和分析C++程序中的内存泄漏。 6. MEMWA TCH-由Johan Lindh编写,是一个开放源代码C语言内存错误检测工具,主要是通过gcc的precessor来进行。 7. V algrind-Debugging and profiling Linux programs, aiming at programs written in C and C++. 8. KCachegrind-A visualization tool for the profiling data generated by Cachegrind and Calltree. 9. Leak Monitor-一个Firefox扩展,能找出跟Firefox相关的泄漏类型。 10. IE Leak Detector (Drip/IE Sieve)-Drip和IE Sieve leak detectors帮助网页开发员提升动态网页性能通过报告可避免的因为IE局限的内存泄漏。 11. Windows Leaks Detector-探测任何Win32应用程序中的任何资源泄漏(内存,句柄等),基于Win API调用钩子。 12. SAP Memory Analyzer-是一款开源的JA V A内存分析软件,可用于辅助查找JA V A程序的内存泄漏,能容易找到大块内存并验证谁在一直占用它,它是基于Eclipse RCP(Rich Client Platform),可以下载RCP的独立版本或者Eclipse的插件。 13. DTrace-即动态跟踪Dynamic Tracing,是一款开源软件,能在Unix类似平台运行,用户能够动态检测操作系统内核和用户进程,以更精确地掌握系统的资源使用状况,提高系统性能,减少支持成本,并进行有效的调节。 14. IBM Rational PurifyPlus-帮助开发人员查明C/C++、托管.NET、Java和VB6代码中的性能和可靠性错误。PurifyPlus 将内存错误和泄漏检测、应用程序性能描述、代码覆盖分析等功能组合在一个单一、完整的工具包中。 15. Parasoft Insure++-针对C/C++应用的运行时错误自动检测工具,它能够自动监测C/C++程序,发现其中存在着的内存破坏、内存泄漏、指针错误和I/O等错误。并通过使用一系列独特的技术(SCI技术和变异测试等),彻底的检查和测试我们的代码,精确定位错误的准确位置并给出详细的诊断信息。能作为Microsoft V isual C++的一个插件运行。

java内存泄露、溢出检查方法和工具

JAVA内存泄露、溢出的检查方法、工具介绍 问题发现: 在我们运行的一个项目上线运营后发现运行两天左右就会报内存溢出,只有重启tomcat才能恢复服务,异常信息如下: https://www.sodocs.net/doc/0b9024598.html,ng.OutOfMemoryError: GC overhead limit exceeded https://www.sodocs.net/doc/0b9024598.html,ng.OutOfMemoryError: Java heap space 原因分析: 在此之前必须先介绍一下关于jvm的内存控制,JVM即java虚拟机,它运行时候占用一定的内存,其大小是有限定的,如果程序在运行时jvm占用的内存大于某个限度,则会产生内存溢出,也就是“https://www.sodocs.net/doc/0b9024598.html,ng.outofmemoryerror”。如果jvm内存的没有限度,并且有无限大的内存,那jvm就永远不会出现内存溢出了。很明显无限的内存是不现实的,但是一般情况下我们程序运行过程所需要的内存应该是一个基础固定的值,如果仅是因为我们的项目所需内存超过了jvm设置内存值导致内存溢出,那么我们可以通过增大jvm的参数设置来解决内存溢出的问题。详细处理可参考java jvm的如下参数设置:-Xms -Xmx -Xmn -Xss -Xms: 设置JVM初始内存,此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。 -Xmx:设置JVM最大可用内存。 -Xmn:设置年轻代大小,整个堆大小=年轻代大小+年老代大小+持久代大小.持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小.此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8. -Xss:设置每个线程的堆栈大小.在相同物理内存下,减小这个值能生成更多的线程.但是操作系统对一个进程内的线程数还是有限制的,不能无限生成。 在jvm参数调试过程中,发现分配最大内存数超过1G后,仍然会产生内存溢出的现象,而估计其正常分配使用的内存应该不会超过1G,那么由此可以基本断定其存在内存泄露现象,也就是一些原来分配的不再使用的内存不能被java的垃圾回归所回收,导致不断占用原分配的内存而不释放,导致不断申请更多的内存直到超过内存设置而导致内存溢出。

vld内存泄露检测工具介绍及基本原理分析

vld介绍及基本原理分析 作者:何锟 目录 内容导读 (2) 一、vld简介 (2) 二、vld使用方法介绍 (2) 使用步骤 (2) 使用举例 (2) 配置文件(vld.ini)说明 (3) 原理分析分析与思考 (4) 关键技术 (4) 流程分析 (4) 钩子程序分析 (5) 优缺点分析与改进 (6) 优缺点: (6) 改进思考 (6)

内容导读 本文分包括这几个部分: 1、Vld简介 2、Vld使用方法介绍 3、vld原理分析分析 4、vld优缺点分析与改进 一、vld简介 vld全称:Visual Leak Detector 发展历史:2005年~ 2016年,Version 2.5.0 版权:免费、开源 用途:检测windows c/c++程序内存泄露,并且输出详细报告 二、vld使用方法介绍 使用步骤 1、集成到工程 在工程任意位置包含头文件”vld.h”、并且指定静态库路径”vld.lib”,编译时需要宏_DEBUG或VLD_FORCE_ENABLE 2、运行程序 运行环境:debughelp.dll, vld.dll,vld.ini 3、执行测试用例 4、关闭程序时生成了内存测试报告(文本文件或IDE输出窗口) 5、根据报告分析内存泄露 使用举例 源码

编译运行后,可以看到IDE的输出窗口中输出内容 注意:报告还可以输出到txt文件,默认名称为memory_leak_report.txt 配置文件(vld.ini)说明 Vld.ini里面有详细的说明。其中常用的选项有: 1:开启或关闭内存测试 2:报告中是否去掉重复的堆栈 3:函数调用栈的最大深度 4:泄露内存打印的字节数

三种优秀的内存测试软件用法

Windows Memory Diagnostic 工具启动时默认为“Standard”(标准)模式,此模式包括 6 项不同的连续内存测试,每项测试都使用一种独特的算法来扫描不同类型的错误。在程序运行时,屏幕会显示每个单

一般情况下用“扩展内存测试模式”检测内存就可以了. 注意:这个软件是不会自动停止的,可以按‘X’键退出用的时候多看看它的数据 每测试都完一项后,工具会显示“Succeeded”(成功)或“Failed”(失败)消息;如果你的内存是两条或以上,可拔下一条来,一条一条独立测试,一定要全部Succeeded,否则就要换内存了(或者是内存槽坏了)。

(二)RAM Stress Test(RST)内存测试软件 Data Bus 数据总线

工厂检测内存条质量的软件Ram Stress Test,只要有一丁点问题,都能检查出来,推荐大家使用,各位一定都碰到过,提示内存不能为 READ,或者WRITTEN的情况,很多时候都是软件问题,要解决他首先检查内存条的质量,然后再从软件去找问题。这个软件是最专业的,比那个 MEMREST还好,只需要检查一边,好就是好,坏的就是坏的。这个软件确实很好,内存坏的话会显示红色,并且报警。但是只能检测一代内存,二代内存就需要微软的检测工具了。 Ram Stress Test是美国Ultra-X公司旗下的一个专业记忆体测试程式,是专门给系统生产厂商出机前用的测试程式,他其实是从其他的产品独立出来的一项测试,该公司专作系统测试的软硬体,方便生产厂商将产品做详细测试,至于R.S.T.在目前记忆体生产业使用非常普遍,因为经 过他的测试几乎就能应付大部分的记忆体问题,所以是非常好用的一个测试工具!! 使用非常简易,只要设定为软碟开机就行了,他是一个独立开发的系统,没有依附任何作业系统,相容于x86系列,只要BIOS认的到的容量他都能测!!发现ATS 选项错误,在BIOS 中,记忆体选项设成Auto时,记忆体的CL=2,改成Manual,自设CL=2.5时,上述选项才能通过。 程序执行后,第一选项是测试物理内存中基本内存地址(<640K),第二项是扩展内存地址,第三项是测试你CPU的L2 cache。 ☆可以测试SD及DDR内存。 ☆闪动数字——0123456789ABCDEF0123456789ABCDEF 0123456789ABCDEF0123456789ABCDEF 依次代表内存条的8颗颗粒。 从左到右横着数:0-7代表第1颗粒区域、8-F代表第2颗粒、0-7代表第3颗粒、8-F代表第4颗粒、0-7代表第5颗粒代、8-F代表第6颗粒、0-7代表 第7颗粒、8-F代表第8颗粒 ☆点不亮内存的测试方法——很多内存短路或者颗粒损坏后都不能点亮,点不亮的可以用一根好的内存去带动它(可解决部分点不亮问题) 。必须SD的带SD的,DDR的带DDR的。本软件会自动跳过好的去检测坏的那根。 ☆发现ATS 选项错误,在BIOS中,记忆体选项设成Auto时,记忆体的CL=2,改成Manual,自设CL=2.5时,上述选项才能通过。 ☆程序执行后,第一选项是测试物理内存中基本内存地址(<640K),第二项是扩展内存地址,第三项是测试CPU的L2 cache。 RAM测试软件说明书 (R.S.T )UX版 闪动的一排测试数字代表内存8颗粒的测试情况。 从左至右,0-7代表第一区域,8-F代表第二区域;0-7代表第三区域,8-F代表第四区域;……依次代表内存条的8颗颗粒。 ⒈DDR8位与16位的单面测法: ⑴. 0-7(1 )区域如果出现乱码,代表这根DDR内存条的第1颗粒已经损坏 ⑵. 8-F(2 )区域如果出现乱码,代表这根DDR内存条的第2颗粒已经损坏 ⑶. 0-7(3 )区域如果出现乱码,代表这根DDR内存条的第3颗粒已经损坏 ⑷. 8-F(4 )区域如果出现乱码,代表这根DDR内存条的第4颗粒已经损坏 ⑸. 0-7(5 )区域如果出现乱码,代表这根DDR内存条的第5颗粒已经损坏 ⑹. 8-F(6 )区域如果出现乱码,代表这根DDR内存条的第6颗粒已经损坏 ⑺. 0-7(7 )区域如果出现乱码,代表这根DDR内存条的第7颗粒已经损坏 ⑻. 8-F(8 )区域如果出现乱码,代表这根DDR内存条的第8颗粒已经损坏 注意DR的颗粒排列循序是1-2-3-4-5-6-7-8 ⒉如果你是128M的双面DDR内存,如以上显示界面图:

相关主题