怎么样读取转储文件 应该怎么做?

来源:互联网
责任编辑:李佳
 综合 
字体:

完全不用担心或者在意 顾名思义 转储文件 转换-储存-文件 把一个进程的信息 转换成可识别的内

当Windows系统程序发生意外崩溃或停止响应时,系统会自动生成一个“内存转储文件”来存储故障发生前的程序信息。读取内存转储文件可以帮助你了解故障发生的原因、找到合适的解决途径。本文中会介绍在微软Windows XP和Vista系统中配置、读取小转储文件的详细步骤。如果你使用的是其它类型操作系统,你也可以参考本文的方法来进行操作(操作方法类似)。

步骤

内存转储文件也被称作虚拟内存,是用硬盘里的一段空间虚拟成内存来存放程序来运行,由于硬盘的运行速度比内

以Read Dump Files Step 1为标题的图片

1小转储文件只保存内存前少量的基本内存空间的数据,这些信息可以帮助你了解计算机停止运行或发生故障的原因,其中包括:

本主题适用于:版本Visual BasicC#F#C++Web Developer学习版专业版、高级

终止消息

加载驱动程序的记录

打开任务管理器-找到lol进程-右键-创建转储文件

故障处理程序的处理器环境

系统错误内存转储文件:在默认的设置下,如果系统发生了严重的错误,会转储很多内存中的数据,以便管理人

故障处理程序的内核环境

这个预算不建议用AMDRyzenR51600这样子配置很不搭配。吃鸡内存建议16G起步要不然内存不够,很多时候玩游戏都是内存拖后腿,硬盘用三星PM961M.2256G高速固态,读:3000M/S写:1150M/S。用AMDRyzenR51400这个CPU足够了再加上技嘉GTX10603G搭配16G内存可以吃鸡了,参考以下配置即可。CPU:AMDRyzenR51400主板套装主板:华硕B350Plus1480显卡:技嘉GTX10603G风魔1600内存:威刚DDR416G24008G单条840SSD:三星PM961M.2256G660散热:CPU原装自带电源:全汉额定450铜牌250机箱:游戏悍

处理器信息和内核线程环境

磁感应,每件商品都会贴上标签,标签是被磁化的。结账时,要经过收银台的消磁设备。如果没被消磁过感应器就会报警。【商品电子防盗系统的作用】1、防止失窃。EAS系统,改变以往\"人盯人\"\"人看货\"的方式,以高科技手段赋予商品一种自卫能力,使安全措施落实到每一件商品上,彻底有效地解决商品失窃问题,为商家挽回损失。2、简化管理。EAS系统能有效地遏制\"内盗\",缓和管理者与员工的矛盾,排除员工心理障碍,使员工全身心投入工作中去,提高工作效率,还可以从原来的基础上减少员工,精选员工,优化员工,从而提高商场的档次。3、威慑作用。EAS系统以强硬而礼貌的方式阻止顾客\"顺手牵羊\"的行为,避免人为因素

故障线程相关的内核模式信息

瓷砖电视背景墙的优点就是:1,使用它装修的话会让家里的档次看起来提升很多,可以从视觉上提高空间的宽敞度,也能让居室变得明亮时尚起来。2,因为制作过程是在瓷砖上进行图案烤或雕刻完最后再把颜色弄上去,所以看起来的话视觉是很大的一个享受,基本上颜色不会再变,防潮等不会像壁纸一样的用没多久就潮湿了的特点。3,如果你家里有小孩的话,瓷砖电视墙更耐脏和清洁,不担心破坏居室的美感。而且瓷砖的耐旧度和耐看度很高,即使过了十年,也能亮洁如新。4,还要一点是很重要的由因为是根据您的个性来制作的,完全可以根据您的装修要求和实际尺寸来制作,所以在您附近的大部分地区可以说是独一无二的。缺点就是:1,价格说起来还算不便宜

以Read Dump Files Step 2为标题的图片

2配置小型转储文件:

铲屎官们在撸狗的时候,是不是经常发现汪星人会把白白的大肚子展现在你面前?对于狗狗来说,肚子是它的一个很重要的部位,也是个要害,很多狗狗会露出自己的肚皮来向铲屎官示好。一般的铲屎官都认为狗狗这样是在撒娇、求摸,但其实狗狗翻肚皮还有其他原因。1.表示在乎狗狗除了会用激烈的摇尾巴方式来表示自己喜欢一个人,它们还会张嘴吐舌头开心的看着你,再有就是把自己的肚子露出来。这时候它们就是在说:我很在乎你、喜欢你、信任你哦。2.表示臣服铲屎官在汪星人眼中就像王一样的存在,它们把你当做自己的老大。在想要向你示弱,表示投降臣服的时候,狗狗也会翻起肚子,不过这个时候它们一般不敢看你的眼睛,而且尾巴会卷向肚子方向。3.

选择“开始” >“设置” > “控制面板”> “系统”

选择系统属性中的“高级”选项卡,然后选择“启动和故障恢复”选项栏中的“设置”。

找到列表中的“写入调试信息”选项,并选择“小内存转储”选项。

以Read Dump Files Step 3为标题的图片

3使用转储文件检查工具(Dumpchk.exe)来读取转储文件。

插入与你当前操作系统版本一致的Windows光盘。

选择光盘中的微软支持工具包,并运行“Setup.exe”(安装执行程序)来安装它。

从下载的微软支持工具包中打开其中的Dumpchk.exe文件。

浏览Dumpchk.exe文件提供的选项,并查看该文件。其中包括转储验证、其它的验证文件、转储检验、转储检验符号搜索、转储检验图片搜索等。

运行扫描并输出读取结果。Dumpchk.exe会报告在转储文件信息中找到的所有系统错误。该程序不会修复任何系统损坏,但会列出系统故障原因。

以Read Dump Files Step 4为标题的图片

4用Windows除错诊断工具读取转储文件。

从官方网站下载并安装Windows系统除错诊断工具。

打开转储文件。具体方法是,选择“开始”按钮,然后选择“运行”选项。输入“cmd”(不带引号),然后点击确定。

输入“cd c:\program files\debugging tools for windows”(不带引号)。

按下回车键来获取文件夹。

输入“windbg -y SymbolPath -i ImagePath -z DumpFilePath”(不带引号)来载入转储文件。

输入“kd -y srv*c:\symbols*http://msdl.microsoft.com/download/symbols -i c:\windows\i386 -z c:\windows\minidump\minidump.dmp”(不带引号)来打开转储文件。

警告

由于小内存转储文件只占有很小的硬盘存储空间(大约2MB),所以文件中一般不包含解释故障原因的相关信息。

扩展阅读,根据您访问的内容系统为您准备了以下扩展内容,希望对您有帮助。

怎么获得JVM的堆转储文件

对于大型 JAVA 应用程序来说,再精细的测试也难以堵住所有的漏洞,即便我们在测试阶段进行了大量卓有成效的工作,很多问题还是会在生产环境下暴露出来,并且很难在测试环境中进行重现。JVM 能够记录下问题发生时系统的部分运行状态,并将其存储在堆转储 (Heap Dump) 文件中,从而为我们分析和诊断问题提供了重要的依据。

通常内存泄露分析被认为是一件很有难度的工作,一般由团队中的资深人士进行。不过,今天我们要介绍的 MAT(Eclipse Memory Analyzer)被认为是一个“傻瓜式“的堆转储文件分析工具,你只需要轻轻点击一下鼠标就可以生成一个专业的分析报告。和其他内存泄露分析工具相比,MAT 的使用非常容易,基本可以实现一键到位,即使是新手也能够很快上手使用。

MAT 的使用是如此容易,你是不是也很有兴趣来亲自感受下呢,那么第一步我们先来安装 MAT。

回页首

准备环境和测试数据

我们使用的是 Eclipse Memory Analyzer V0.8,Sun JDK 6

安装 MAT

和其他插件的安装非常类似,MAT 支持两种安装方式,一种是“单机版“的,也就是说用户不必安装 Eclipse IDE 环境,MAT 作为一个独立的 Eclipse RCP 应用运行;另一种是”集成版“的,也就是说 MAT 也可以作为 Eclipse IDE 的一部分,和现有的开发平台集成。

集成版的安装需要借助 Update Manager。

如图 1 所示,首先通过 Help -> Software Updates... 启动软件更新管理向导。

图 1. 安装插件第一步

图 1. 安装插件第一步

选择“Available Software“然后按如图 2 所示的方式添加 MAT 的更新地址http://download.eclipse.org/mat/1.2/update-site/

图 2. 安装插件第二步

图 2. 安装插件第二步

如图 3 所示,接下来选择你想要安装的 MAT 的功能点,需要注意的是 Memory Analyzer (Chart) 这个功能是一个可选的安装项目,它主要用来生成相关的报表,不过如果需要用到这个功能,你还需要额外的安装 BIRT Chart Engine。

图 3. 安装插件第三步

图 3. 安装插件第三步

插件安装完毕,你还需要重新启动 Eclipse 的工作平台。

比较而言,单机版的安装方式非常简单,用户只需要下载相应的安装包,然后解压缩即可运行,这也是被普遍采用的一种安装方式。在下面的例子里,我们使用的也是单机版的 MAT。具体的下载要求和地址可参见其产品下载页面:http://www.eclipse.org/mat/downloads.php。

另外,如果你需要用 MAT 来分析 IBM JVM 生成的 dump 文件的话,还需要额外安装 IBM Diagnostic Tool Framework ,具体的下载和安装配置步骤请参见:http://www.ibm.com/developerworks/java/jdk/tools/dtfj.html

配置环境参数

安装完成之后,为了更有效率的使用 MAT,我们还需要做一些配置工作。因为通常而言,分析一个堆转储文件需要消耗很多的堆空间,为了保证分析的效率和性能,在有条件的情况下,我们会建议分配给 MAT 尽可能多的内存资源。你可以采用如下两种方式来分配内存更多的内存资源给 MAT。

一种是修改启动参数 MemoryAnalyzer.exe -vmargs -Xmx4g

另一种是编辑文件 MemoryAnalyzer.ini,在里面添加类似信息 -vmargs – Xmx4g。

至此,MAT 就已经成功地安装配置好了,开始进入实战吧。

获得堆转储文件

巧妇难为无米之炊,我们首先需要获得一个堆转储文件。为了方便,本文采用的是 Sun JDK 6。通常来说,只要你设置了如下所示的 JVM 参数:

-XX:+HeapDumpOnOutOfMemoryError

JVM 就会在发生内存泄露时抓拍下当时的内存状态,也就是我们想要的堆转储文件。

如果你不想等到发生崩溃性的错误时才获得堆转储文件,也可以通过设置如下 JVM 参数来按需获取堆转储文件。

-XX:+HeapDumpOnCtrlBreak

除此之外,还有很多的工具,例如 JMap,JConsole 都可以帮助我们得到一个堆转储文件。本文实例就是使用 JMap 直接获取了 Eclipse Galileo 进程的堆转储文件。您可以使用如下命令:

JMap -dump:format=b,file=<dumpfile> <pid>

不过,您需要了解到,不同厂家的 JVM 所生成的堆转储文件在数据存储格式以及数据存储内容上有很多区别, MAT 不是一个万能工具,它并不能处理所有类型的堆存储文件。但是比较主流的厂家和格式,例如 Sun, HP, SAP 所采用的 HPROF 二进制堆存储文件,以及 IBM 的 PHD 堆存储文件等都能被很好的解析(您需要安装额外的插件,请参考 相关说明,本文不作详细解释)。

万事俱备,接下来,我们就可以开始体验一键式的堆存储分析功能了。

回页首

生成分析报告

首先,启动前面安装配置好的 Memory Analyzer tool , 然后选择菜单项 File- Open Heap Dump 来加载需要分析的堆转储文件。文件加载完成后,你可以看到如图 4 所示的界面:

图 4. 概览

图 4. 概览

通过上面的概览,我们对内存占用情况有了一个总体的了解。先检查一下 MAT 生成的一系列文件。

图 5. 文件列表

图 5. 文件列表

可以看到 MAT 工具提供了一个很贴心的功能,将报告的内容压缩打包到一个 zip 文件,并把它存放到原始堆转储文件的存放目录下,这样如果您需要和同事一起分析这个内存问题的话,只需要把这个小小的 zip 包发给他就可以了,不需要把整个堆文件发给他。并且整个报告是一个 HTML 格式的文件,用浏览器就可以轻松打开。

接下来我们就可以来看看生成的报告都包括什么内容,能不能帮我们找到问题所在吧。您可以点击工具栏上的 Leak Suspects 菜单项来生成内存泄露分析报告,也可以直接点击饼图下方的 Reports->Leak Suspects 链接来生成报告。

图 6. 工具栏菜单

图 6. 工具栏菜单

回页首

分析三步曲

通常我们都会采用下面的“三步曲”来分析内存泄露问题:

首先,对问题发生时刻的系统内存状态获取一个整体印象。

第二步,找到最有可能导致内存泄露的元凶,通常也就是消耗内存最多的对象

接下来,进一步去查看这个内存消耗大户的具体情况,看看是否有什么异常的行为。

下面将用一个基本的例子来展示如何采用“三步曲”来查看生产的分析报告。

查看报告之一:内存消耗的整体状况

图 7. 内存泄露分析报告

图 7. 内存泄露分析报告

如图 7 所示,在报告上最醒目的就是一张简洁明了的饼图,从图上我们可以清晰地看到一个可疑对象消耗了系统 99% 的内存。

在图的下方还有对这个可疑对象的进一步描述。我们可以看到内存是由 java.util.Vector 的实例消耗的,com.ibm.oti.vm.BootstrapClassLoader 负责这个对象的加载。这段描述非常短,但我相信您已经可以从中找到很多线索了,比如是哪个类占用了绝大多数的内存,它属于哪个组件等等。

接下来,我们应该进一步去分析问题,为什么一个 Vector 会占据了系统 99% 的内存,谁阻止了垃圾回收机制对它的回收。

查看报告之二:分析问题的所在

首先我们简单回顾下 JAVA 的内存回收机制,内存空间中垃圾回收的工作由垃圾回收器 (Garbage Collector,GC) 完成的,它的核心思想是:对虚拟机可用内存空间,即堆空间中的对象进行识别,如果对象正在被引用,那么称其为存活对象,反之,如果对象不再被引用,则为垃圾对象,可以回收其占据的空间,用于再分配。

在垃圾回收机制中有一组元素被称为根元素集合,它们是一组被虚拟机直接引用的对象,比如,正在运行的线程对象,系统调用栈里面的对象以及被 system class loader 所加载的那些对象。堆空间中的每个对象都是由一个根元素为起点被层层调用的。因此,一个对象还被某一个存活的根元素所引用,就会被认为是存活对象,不能被回收,进行内存释放。因此,我们可以通过分析一个对象到根元素的引用路径来分析为什么该对象不能被顺利回收。如果说一个对象已经不被任何程序逻辑所需要但是还存在被根元素引用的情况,我们可以说这里存在内存泄露。

现在,让我们开始真正的寻找内存泄露之旅,点击“Details ”链接,可以看到如图 8 所示对可疑对象 1 的详细分析报告。

图 8. 可疑对象 1 的详细分析报告

图 8. 可疑对象 1 的详细分析报告

我们查看下从 GC 根元素到内存消耗聚集点的最短路径:

图 9. 从根元素到内存消耗聚集点的最短路径

图 9. 从根元素到内存消耗聚集点的最短路径

我们可以很清楚的看到整个引用链,内存聚集点是一个拥有大量对象的集合,如果你对代码比较熟悉的话,相信这些信息应该能给你提供一些找到内存泄露的思路了。

接下来,我们再继续看看,这个对象集合里到底存放了什么,为什么会消耗掉如此多的内存。

图 10. 内存消耗聚集对象信息

图 10. 内存消耗聚集对象信息

在这张图上,我们可以清楚的看到,这个对象集合中保存了大量 Person 对象的引用,就是它导致的内存泄露。

至此,我们已经拥有了足够的信息去寻找泄*,回到代码,我们发现,是下面的代码导致了内存泄露 :

清单 1. 内存泄漏的代码段

while (1<2) { Person person = new Person("name","address",i); v.add(person); person = null; }

回页首

总结

从上面的例子我们可以看到用 MAT 来进行堆转储文件分析,寻找内存泄露非常简单,尤其是对于新手而言,这是一个很好的辅助分析工具。但是,MAT 绝对不仅仅是一个“傻瓜式”内存分析工具,它还提供很多高级功能,比如 MAT 支持用 OQL(Object Query Language)对 heap dump 中的对象进行查询,支持对线程的分析等,有关这些功能的使用可以参考 MAT 的帮助文档。

参考资料

您可以查看 Eclipse 的 MAT 项目首页,了解 MAT 的最新动态。

使用 Eclipse Memory Analyzer 进行堆转储文件分析

http://www.ibm.com/developerworks/cn/opensource/os-cn-ecl-ma/index.html

什么叫“内存转储文件”?可以清除吗?

是虚拟内存

就是用硬盘里的一段空间虚拟成内存来存放程序来运行,由于硬盘的运行速度快内存慢很多,所以虚拟内存应不要很大,操作系统把虚拟内存存在一个文件里,那个文件有多大表示当前操作系统虚拟的内存有多大

文件不可彻底删除。但可修改,右击我的电脑,选中高级,选项卡,单击设置,再单击一下高级选项卡,下面有个虚拟内存,你单击一下更改在里面设置,可以设置不要虚拟内存(最好不要除非你的内存有1G多)和虚拟内存的大小以及在哪个硬虚拟。最后单击确定就可

备份文件

备份文件就是把你需要的,很重要的东西进行一个备份,生成一个镜像文件,方便你以后一旦你备份过的东西损坏,可以进行还原.关于这个备份文件是可以删除的,只要找到你所备份文件生成的镜像文件,然后把它删除就OK了.建议你做一个备份,最常用的备份文件有GHOST..等等

删除了内存转储文件会怎样

首先了解一下什么是内存转储文件:

内存转储是用于系统崩溃时,将内存中的数据转储保存在转储文件中,供给有关人员进行排错分析用途。

(所以对于普通用户来讲,没有什么实际意义,我都是关闭它的)

小内存转储,只是保存内存前64K的基本内存空间的数据

核心内存转储,保存操作系统和相关系统级别服务的数据。

完全内存转储,就是将内存中的数据全部保存,包括系统数据和用户数据。

它们包含内存的范围从小到大,容量也是。

内存转储,只是用于专业人员用于排错。

当系统崩溃时,将内存中的数据保存在页面交换文件中,pagefile.sys,在系统重起时,再将页面交换文件中的数据转储在转储文件中。

完全内存转储,对于内存比较大的机器来讲,转储过程很漫长的。比如1G内存,系统需要两次转储1G的数据,不过,这种模式保存数据完整。

****简单的说,内存转储文件记录系统出故障时的文件,没什么用。大可放心删除。

www.book1234.com true http://www.book1234.com/10/4336/108612.html report 64347 怎么样读取转储文件应该怎么做?,当Windows系统程序发生意外崩溃或停止响应时,系统会自动生成一个“内存转储文件”来存储故障发生前的程序信息。读取内存转储文件可以帮助你了解故障发生的原因、找到合适的解决途径。本文中会介绍在微软WindowsXP和Vista系统中配置、读取小转储文...
娱乐时尚
历史文化
真视界
旅游美食
精彩图文
我爱我车
母婴健康
关于本站 | 广告服务 | 手机版 | 商务合作 | 免责申明 | 招聘信息 | 联系我们
Copyright © 2004-2018 book1234.com All Rights Reserved. 布客网 版权所有
京ICP备10044368号-1 京公网安备11010802011102号
教育考试: 学历财经建筑 医药公考资格外语电脑作文招聘中小学留学 文档 移民 文库专栏23问答中心z资讯z资讯1资讯涨资讯涨资讯1资讯问答图书馆知识IT编程数码信息解决方案信息中心IT科技问答新闻中心软件教室设计大全网络相关英语学习开发编程考试中心参考范文管理文库营销中心站长之家IT信息中心商学院数码大全硬件DIY企业服务网吧在线百科硬件知识手机平板汽车游戏家电精彩摄影现代家居IT女人经验健康养生猎奇创业攻略教育学习历史时尚潮流最近更新涨知识