我正在尝试分析托管进程内存转储,怀疑是否存在native内存泄漏。为了能够使用windbg(并从那里使用!heap扩展),我为服务器进程激活了用户模式调用堆栈我看到很多大小为68的block。在这些block中(我可以使用!heap-p-a手动验证的block)有许多调用堆栈的形式!heap-p-a000000003ca5cfd0address000000003ca5cfd0foundin_HEAP@1ea0000HEAP_ENTRYSizePrevFlagsUserPtrUserSize-state000000003ca5cfa000090000[00]000000003ca5cfd
我的AutoIt脚本自动执行测试用例。我怀疑某些东西正在泄漏内存。它从10MB开始,当测试用例结束时它达到大约40MB(TaskManager值)。我希望我的AutoIt脚本在每个测试用例之后报告内存消耗。了解差异后,我可能可以找到原因。如何使用AutoIt脚本检索进程的内存消耗? 最佳答案 您正在查找WorkingSetSize,它可能与任务管理器中列出的值不完全相同。根据它的documentation,工作集是在给定时间物理映射到进程上下文的内存量。判断方法如下:$wbemFlagReturnImmediately=0x10$w
我正在使用GetProcessMemoryInfo函数通过其PID确定进程内存使用情况。使用常规PROCESS_MEMORY_COUNTERS一切正常,但我需要PrivateUsage成员,它仅存在于扩展结构PROCESS_MEMORY_COUNTERS_EX中。有几个文档促使我强制将扩展类型转换为基本类型,否则我的示例将无法编译。我仍然能够从基本成员获取值,例如PeakWorkingSetSize,但PrivateUsage始终为0。我什至尝试重新定义PSAPI_VERSION-仍然没有。无法使用PSAPI_VERSION这是我的例子。#include#include#include
在尝试查找Windows应用程序中的一些内存泄漏时,我遇到了gflags的问题。当我打开ust标志(为了收集内存分配堆栈跟踪)时,我的应用程序的内存增加速度比关闭该标志时快得多(它在10分钟内达到800MB最小大约。这与我在关闭标志时获得的50-100MB/天相去甚远。我读到堆栈跟踪的最大值为32MB,所以我想这应该不是问题。计算机是4xIntel(R)Xeon(R)CPUE5410@2.33GHz。如果有人能给我一些提示,我将不胜感激。谢谢! 最佳答案 堆栈跟踪数据库并不是ust标志的唯一影响。它还向每个分配添加至少32个字节,以
我使用C++编写代码,在Windows7上使用VisualStudio2008。我的应用程序有内存泄漏,我可以通过系统监视器看到它。我需要在代码中发现它。是否存在返回分配给调用进程的内存量的函数? 最佳答案 有一个MSVC特定的memleak检测解决方案//enablememoryleaksdetection#if!defined(NDEBUG)HANDLEhLogFile=CreateFile("log.txt",GENERIC_WRITE,FILE_SHARE_WRITE,NULL,CREATE_ALWAYS,FILE_ATTR
我正在尝试通过重载new和delete运算符在C++中编写内存跟踪器。但它会进入循环并一次又一次地调用new。以下是我的代码。#ifndefMEMORY_TRACKER_H_#defineMEMORY_TRACKER_H_#pragmawarning(disable:4290)#pragmacomment(lib,"Dbghelp.lib")#include#include#include#include#include#include#includestaticconstintMAX_TRACES=62;staticconstintMAX_LENGTH=256;staticconst
我正在编写一个应用程序,它本质上是一堆松散的xaml屏幕-没有代码隐藏,只是在运行时动态链接到ViewModel。周末在一台旧电脑上运行这个程序时,发生了崩溃。跟踪和重新创建显示igdumd32.dll(英特尔图形驱动程序dll)中存在内存泄漏。经过一些调查后,我编写了2个简单的独立应用程序,在中央屏幕上有一个非常简单的动画。1个没有效果,1个在动画上有dropshadoweffect-没有其他更改,实际上是对第一个应用程序的1行更改(xaml非常冗长,否则我会在此处发布)。我通过redgate的内存分析器工具运行了40分钟。第一个很好:但是第二个在igdumd32.dll和托管代码分
我们目前正在使用ReactiveUI来帮助构建一个相当大的基于WPF的Windows应用程序。一切都很顺利,直到我们发现我们的应用程序正在消耗大量内存……基本上我们所有的View、View模型和模型都没有被垃圾收集。根据JetBrainsdotMemory等内存分析器的信息,ReactiveUI似乎是罪魁祸首。特别是我们在View中配置的ReactiveUI绑定(bind),即使我们正在使用最佳实践并确保在停用View时处理所有绑定(bind)。以下是我们正在创建的View之一的示例。任何关于我们可能哪里出错的想法都将不胜感激。publicpartialclassRunbookInpu
我有一个c#应用程序,它依赖于第三方非托管程序集来访问某些硬件。非托管代码存在内存泄漏,每次访问后内存消耗将增加~10mb。问题是已知的;没有错误修正可用。有没有一种方法可以让我在不定期重启的情况下继续使用这个程序集?我尝试创建一个单独的AppDomain,通过appDomain.CreateInstanceAndUnwrap()将有问题的代码加载到该AppDomain中,然后通过AppDomain.Unload()卸载该域.然而,这显然不会释放该域使用的非托管内存,只会释放托管内存。我还可以将应用程序拆分为两个独立的部分,然后仅重新启动具有非托管dll的部分。然而,这将意味着重大的重
我正在开发一个使用WPFWebBrowser控件(System.Windows.Controls.WebBrowser)的项目。该程序的Web浏览器元素是用户可以参与的众多事件之一,并在单独的窗口中打开。用户离开浏览器后,窗口关闭,每次用户返回浏览器时都会创建一个新窗口。我们注意到在持续使用浏览器时,我们的程序出现了显着的内存泄漏/性能下降(使用量从最初的~200mb上升到~700mb)。在我们自己的代码中未能找到任何资源泄漏点之后,我决定确定问题是出在我们自己的WebBrowser包装器控件上,还是出在WPF控件上。我创建了一个新的简单项目,其中仅包含一个MainWindow和一个W