内存泄露

问题描述

症状:在WindowsServer2008标准版、2008R2标准版、WindowsServer2012标准版中,程序运行一段时间以后,使用内存暴涨,如不重启,内存会被程序占用完。但是在WindowsServer2003标准版中内存使用是正常的(30M左右)使用Adplushang模式,抓出了dump文件,大小约4.3GB.在WinDbg中,!EEHeap-stat的结果如下:--------------------------------------TotalLoaderHeapsize:0x4b608000(1264615424)bytes=======================================NumberofGCHeaps:1generation0startsat0x0000000010ed0ce0generation1startsat0x0000000010e8ec78generation2startsat0x0000000002671000ephemeralsegmentallocationcontext:nonesegmentbeginallocatedsize000000000267000000000000026710000000000010fbdf080x000000000e94cf08(244633352)Largeobjectheapstartsat0x0000000012671000segmentbeginallocatedsize0000000012670000000000001267100000000000199ba1c00x00000000073491c0(120885696)TotalSize0x15c960c8(365519048)------------------------------GCHeapSize0x15c960c8(365519048)可以看到Heap才365M,但是DumpFile却有4.3GB.另外就是LoaderHeap有1.2GB.加上-loader参数以后,发现有几千个module,如下Module000007ff4ff70b28:Size:0x0(0)bytes.Module000007ff4ff724e8:Size:0x0(0)bytes.Module000007ff4ff73ea8:Size:0x0(0)bytes.Module000007ff4ff75868:Size:0x0(0)bytes.Module000007ff4ff77228:Size:0x0(0)bytes.Module000007ff4ff78be8:Size:0x0(0)bytes.Module000007ff4ff7a5a8:Size:0x0(0)bytes.Module000007ff4ff7bf68:Size:0x0(0)bytes.Module000007ff4ff7d928:Size:0x0(0)bytes.Module000007ff4ff7f2e8:Size:0x0(0)bytes.Module000007ff4ffb0d30:Size:0x0(0)bytes.Module000007ff4ffb26f0:Size:0x0(0)bytes.Module000007ff4ffb40b0:Size:0x0(0)bytes.Module000007ff4ffb5a70:Size:0x0(0)bytes.Module000007ff4ffb7430:Size:0x0(0)bytes.Module000007ff4ffb8df0:Size:0x0(0)bytes.Module000007ff4ffba7b0:Size:0x0(0)bytes.Module000007ff4ffbc170:Size:0x0(0)bytes.Module000007ff4ffbdb30:Size:0x0(0)bytes.Module000007ff4ffbf4f0:Size:0x0(0)bytes.Module000007ff4fff0f38:Size:0x0(0)bytes.Module000007ff4fff28f8:Size:0x0(0)bytes.Module000007ff4fff42b8:Size:0x0(0)bytes.........随机检查过很多个module,发现内容其实是一样的,如下0:019>!Dumpmodule-mt000007ff504f80e0Name:3jrktwys,Version=0.0.0.0,Culture=neutral,PublicKeyToken=nullAttributes:PEFileAssembly:000000015915cba0LoaderHeap:0000000000000000TypeDefToMethodTableMap:000007ff5050aa78TypeRefToMethodTableMap:000007ff5050aae8MethodDefToDescMap:000007ff5050ac68FieldDefToDescMap:000007ff5050af08MemberRefToDescMap:000007ff5050b378FileReferencesMap:000007ff5050b550AssemblyReferencesMap:000007ff5050b558MetaDatastartaddress:000000015a262264(9088bytes)TypesdefinedinthismoduleMTTypeDefName------------------------------------------------------------------------------000007ff504f88080x02000002WMINET_Converter000007ff504f89180x02000003IWmiConverter000007ff504f8ae00x02000004ConvertClass_0000007ff504f8ce80x02000005ConvertClass_1000007ff504f8ef00x02000006ConvertClass_2000007ff504f91380x02000007ConvertClass_3000007ff504f93400x02000008ConvertClass_4000007ff504f95c80x02000009ConvertClass_5000007ff504f97f00x0200000aConvertClass_6000007ff504f99f80x0200000bConvertClass_7TypesreferencedinthismoduleMTTypeRefName------------------------------------------------------------------------------000007fef8c975900x01000001System.Object000007fef8c9f5f80x01000002System.Collections.Hashtable000007fef8c925a80x01000005System.Guid000007ff002454400x0100000cMicrosoft.Practices.EnterpriseLibrary.Data.Instrumentation.DataServiceEvent000007fef8c999780x0100000dSystem.Type000007ff00248e480x0100000fMicrosoft.Practices.EnterpriseLibrary.Data.Instrumentation.DataConnectionFailedEvent000007ff002495800x01000010Microsoft.Practices.EnterpriseLibrary.Data.Instrumentation.DataTransactionFailedEvent000007ff002497480x01000011Microsoft.Practices.EnterpriseLibrary.Data.Instrumentation.DataServiceFailureEvent000007ff002455900x01000012Microsoft.Practices.EnterpriseLibrary.Data.Instrumentation.DataConnectionOpenedEvent000007ff00249d180x01000013Microsoft.Practices.EnterpriseLibrary.Data.Instrumentation.DataServiceConfigFailureEvent000007ff00249e900x01000014Microsoft.Practices.EnterpriseLibrary.Data.Instrumentation.DataCommandFailedEvent000007ff0024a4680x01000015Microsoft.Practices.EnterpriseLibrary.Data.Instrumentation.DataTransactionRolledBackEvent我的代码中并没有类似WMINET_ConverterIWmiConverter之类的定义,但是有引用微软的企业库.从微软公布的.netsourcecode中查到,这几个class貌似属于System.Management.Instrumentation名称空间下的定义。不知道是哪里出了问题,导致出现占用大量的内存?(补充:如果将Windows2008打到最新的补丁,这个内存泄露的问题也可以解决。但因为补丁太多,具体不知道是哪个解决的这个问题,有高人能提点下么?)

解决方案

解决方案二:
自己顶!!!
解决方案三:
去微软中文技术社区问微软的专业客服
解决方案四:
这类问题还真没碰到过
解决方案五:
貌似很深奥的样子啊,帮顶
解决方案六:
.netmemoryprofiler内存泄漏的测试工具,希望可以帮到你
解决方案七:
看看KB977357:http://support.microsoft.com/kb/977357
解决方案八:
额,新手,后面的字节什么的没看懂
解决方案九:
既然将Windows2008打到最新的补丁,这个内存泄露的问题也可以解决那么显然是操作系统本身的bug造成的,你试图用自己的代码去解决问题,显然是不合适的最好把那个也字去掉
解决方案十:
看着晕。向大神们致敬

时间: 2025-01-01 08:57:08

内存泄露的相关文章

关于Android聊天界面中用使用adapter导致内存泄露的问题,目前不知道如何改善,大神帮忙看看

问题描述 关于Android聊天界面中用使用adapter导致内存泄露的问题,目前不知道如何改善,大神帮忙看看 之前一段时间使用一段时间老是导致内存升高,而且内存也不回收,一步一步的排除了很多地方, 到最后发现问题是出在adapter中,但是也不知道怎么改了. 大神帮看看哪些地方会导致内存泄露! public void setmList(List mList) { if (isgroup) { isDiaplayNickName = SharePreferenceUtil.get_Boolean

记录由Equal基础知识引起的内存泄露

      在最近的公司框架开发中,利用了网上某大牛的反射缓存库作为辅助.在测试的时候发现出现了巨大的内存泄露,在频繁的操作后,内存不断的产生巨大的开销,10多分钟就占有了5,6m的内存.解决问题的时,公司不能上网,没有内存分析工具,没有我钟爱的ANTS Memory Profiler帮助下,我们只能靠简单的内存输出来二分查找缩小范围,利用 System.Diagnostics命名空间下的Process的WorkingSet64属性来统计两次输出的内存增长量(WorkingSet64:描述关联的

C语言内存泄露检测--Memwatch

项目:迅雷下载库内存泄露检测 作者:曾金龙 供职:深圳迅雷网络技术股份有限公司 领域:迅雷下载库 时间:2014-07-26 迅雷的移动下载库是用C语言编写的,为了能够横跨欧亚非拉(ios,android,还有诺基亚的什么系统来着,对了symban)和性能,我们厂的下载库就选择了C,然后在C代码里面使用各种宏,预编译等来达到一 个下载库,多平台使用.不过平台相关的都已经约束在了一个叫common的库里面的一个子模块里面了.这极大的解放了我厂的码农朋友. 但是C毕竟是C,在聊起C的时候,我们组最喜

Python中由于logging模块误用导致的内存泄露的解决方法

  Python中由于logging模块误用导致的内存泄露的解决方法         这篇文章主要介绍了解决Python中由于logging模块误用导致的内存泄露,针对由于过多的UDP连接所产生的问题,需要的朋友可以参考下 首先介绍下怎么发现的吧, 线上的项目日志是通过 logging 模块打到 syslog 里, 跑了一段时间后发现 syslog 的 UDP 连接超过了 8W, 没错是 8 W. 主要是 logging 模块用的不对 我们之前有这么一个需求, 就是针对每一个连接日志输出当前连接

htmlcxx中css文件解析中yyparse有内存泄露,哪位大神能不能帮忙看一下

问题描述 htmlcxx中css文件解析中yyparse有内存泄露,哪位大神能不能帮忙看一下 使用最新版的htmlcxx0.85版,把内部的css解析部分抽出之后,检测出内存泄露

android开发中的java内存泄露分析

做了较长时间的android开发了,发现其实android应用开发入门容易,但是进阶或者成为高级工程师,需要具备的基础能力还是非常高的:性能优化.内存泄露.apk瘦身.热修复等等,这些都非常的考验一个人的能力.android成长之路还很长,自己会持续的走下去.本文主要介绍android内存泄露方面的知识.其实要真的理解内存泄露,需要对JVM.java语言有一定的了解,在这个基础上就比较容易理解本文了. 一.内存泄露概念 在java中,如果一个对象没有可用价值了,但又被其他引用所指向,那么这个对象

关于MFC下检查和消除内存泄露的技巧

摘要 本文分析了Windows环境使用MFC调试内存泄露的技术,介绍了在Windows环境 下用VC++查找,定位和消除内存泄露的方法技巧. 关键词:VC++:CRT 调试堆函数: 试探法. 编译环境 VC++6.0 技术原理 检测内存泄漏的主要工具 是调试器和 CRT 调试堆函数.若要启用调试堆函数,请在程序中包括以下语句: #define CRTDBG_MAP_ALLOC #include <stdlib.h> #include <crtdbg.h>注意 #include 语句

浏览器中的内存泄露

什么是内存泄露 内存泄露是指一块被分配的内存既不能使用,又不能回收,直到浏览器进程结束.在C++中,因为是手动管理内存,内存泄露是经常出现的事情.而现在流行的C#和Java等语言采用了自动垃圾回收方法管理内存,正常使用的情况下几乎不会发生内存泄露.浏览器中也是采用自动垃圾回收方法管理内存,但由于浏览器垃圾回收方法有bug,会产生内存泄露. 内存泄露Quick View 不同的浏览器中存在各种内存泄露方式,目前发现的主要是这样几种: 1.循环引用 已经确认存在泄漏的浏览器:IE6.0 FF2.0

Flex应用内存泄露的分析与诊断

引言 Flex 采用 ActionScript 语言作为脚本语言,编译后的二进制代码在 FlashPlayer 虚拟机 AVM(Actionscript Virtual Machine)中运行.和 Java 语言类似, AVM 中也有一个垃圾收集器(Garbage Collection),对于不用的对象,隔一段时间会进行 收集并销毁,释放内存.和 C++ 语言相比,程序员不需要时刻关注内存的分配和释放,大大 减轻了负担.但是垃圾收集器不能从根本上解决 Flex 内存泄露的问题,这得从 Flash

android内存泄露分析工具MAT详解

一.准备 1.什么是MAT Eclipse提供的一个内存分析工具.它是一个功能丰富的 JAVA 堆转储文件分析工具,可以帮助你发现内存漏洞和减少内存消耗. android studio未集成该插件 需要你下载独立版 android studio的DDMS可以生成hprof是什么文件,不过需要进行一下格式转化(.hprof文件从Dalvik格式转换成J2SE HPROF格式),才可以导入MAT独立版软件. 2.hprof是什么文件 heap dumps,中文翻译,堆转储,快照.即堆内存某个时刻的情