如何调试潜在的内存泄漏?

2023-12-15

我对 Windows 服务进行了编程来完成日常工作。

I InstallUtil它到 Windows 服务,它会醒来并做一些事情,然后thread.sleep(5min)

The code is simple, but I've noticed a potential memory leak. I traced it using DOS tasklist and drew a chart: enter image description here

我可以说很明显存在内存泄漏,尽管很小。

我的代码如下,请帮我找到潜在的泄漏。谢谢。

    public partial class AutoReport : ServiceBase
    {
        int Time = Convert.ToInt32(AppSettings["Time"].ToString());
        private Utilities.RequestHelper requestHelper = new RequestHelper();

        public AutoReport()
        {
            InitializeComponent();
        }

        protected override void OnStart(string[] args)
        {
            Thread thread = new Thread(new ParameterizedThreadStart(DoWork));
            thread.Start();
        }

        protected override void OnStop()
        {
        }

        public void DoWork(object data)
        {
            while (true)
            {
                string jsonOutStr = requestHelper.PostDataToUrl("{\"KeyString\":\"somestring\"}", "http://myurl.ashx");
                Thread.Sleep(Time);
            }
        }
    }

编辑:使用 WinDbg @Russell 建议后。我应该对这些课程做什么?

MT  Count   TotalSize   ClassName
79330b24    1529    123096  System.String
793042f4    471 41952   System.Object[]
79332b54    337 8088    System.Collections.ArrayList
79333594    211 70600   System.Byte[]
79331ca4    199 3980    System.RuntimeType
7a5e9ea4    159 2544    System.Collections.Specialized.NameObjectCollectionBase+NameObjectEntry
79333274    143 30888   System.Collections.Hashtable+bucket[]
79333178    142 7952    System.Collections.Hashtable
79331754    121 57208   System.Char[]
7a5d8120    100 4000    System.Net.LazyAsyncResult
00d522e4    95  5320    System.Configuration.FactoryRecord
00d54d60    76  3952    System.Configuration.ConfigurationProperty
7a5df92c    74  2664    System.Net.CoreResponseData
7a5d8060    74  5032    System.Net.WebHeaderCollection
79332d70    73  876 System.Int32
79330c60    73  1460    System.Text.StringBuilder
79332e4c    72  2016    System.Collections.ArrayList+ArrayListEnumeratorSimple
7.93E+09    69  1380    Microsoft.Win32.SafeHandles.SafeTokenHandle
7a5e0d0c    53  1060    System.Net.HeaderInfo
7a5e4444    53  2120    System.Net.TimerThread+TimerNode
79330740    52  624 System.Object
7a5df1d0    50  2000    System.Net.AuthenticationState
7a5e031c    50  5800    System.Net.ConnectStream
7aa46f78    49  588 System.Net.ConnectStreamContext
793180f4    48  960 System.IntPtr[]

这就是我查找内存泄漏的方法:

1) 下载WinDbg如果您还没有。它是一个非常强大的(尽管由于复杂而难以使用)调试器。

2) 运行 WinDbg 并将其附加到您的进程,方法是按 F6 并选择您的 exe。

3)附加后,键入以下命令:(然后按 Enter)

//这将加载托管扩展

.loadby sos clr

//这将转储堆上所有对象的详细信息

!dumpheap -stat

//这将再次启动服务

g

现在等待几分钟并键入 Ctrl+Break 以重新进入服务。跑过!Dumpheap -stat再次命令查看堆上现在有什么。如果您有内存泄漏(在托管代码中),那么您将看到一个或多个类随着时间的推移不断添加到堆中。您现在知道内存中保存了什么,因此您知道在代码中的何处查找问题。如果您愿意,您可以弄清楚是什么保存了对从 WinDbg 中泄漏的对象的引用,但这是一个复杂的过程。如果您决定使用 WinDbg,那么您可能需要首先阅读 Tess 的博客并执行以下操作labs.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何调试潜在的内存泄漏? 的相关文章

  • 在 xaml 中编写嵌套类型时出现设计时错误

    我创建了一个用户控件 它接受枚举类型并将该枚举的值分配给该用户控件中的 ComboBox 控件 很简单 我在数据模板中使用此用户控件 当出现嵌套类型时 问题就来了 我使用这个符号来指定 EnumType x Type myNamespace
  • 类型中的属性名称必须是唯一的

    我正在使用 Entity Framework 5 并且有以下实体 public class User public Int32 Id get set public String Username get set public virtual
  • 如何从本机 C(++) DLL 调用 .NET (C#) 代码?

    我有一个 C app exe 和一个 C my dll my dll NET 项目链接到本机 C DLL mynat dll 外部 C DLL 接口 并且从 C 调用 C DLL 可以正常工作 通过使用 DllImport mynat dl
  • 用于 FTP 的文件系统观察器

    我怎样才能实现FileSystemWatcherFTP 位置 在 C 中 这个想法是 每当 FTP 位置添加任何内容时 我都希望将其复制到我的本地计算机 任何想法都会有所帮助 这是我之前问题的后续使用 NET 进行选择性 FTP 下载 ht
  • C++ 多行字符串原始文字[重复]

    这个问题在这里已经有答案了 我们可以像这样定义一个多行字符串 const char text1 part 1 part 2 part 3 part 4 const char text2 part 1 part 2 part 3 part 4
  • 访问外部窗口句柄

    我当前正在处理的程序有问题 这是由于 vista Windows 7 中增强的安全性引起的 特别是 UIPI 它阻止完整性级别较低的窗口与较高完整性级别的窗口 对话 就我而言 我想告诉具有高完整性级别的窗口进入我们的应用程序 它在 XP 或
  • WPF 数据绑定到复合类模式?

    我是第一次尝试 WPF 并且正在努力解决如何将控件绑定到使用其他对象的组合构建的类 例如 如果我有一个由两个单独的类组成的类 Comp 为了清楚起见 请注意省略的各种元素 class One int first int second cla
  • 重载 (c)begin/(c)end

    我试图超载 c begin c end类的函数 以便能够调用 C 11 基于范围的 for 循环 它在大多数情况下都有效 但我无法理解和解决其中一个问题 for auto const point fProjectData gt getPoi
  • ASP.NET Core 3.1登录后如何获取用户信息

    我试图在登录 ASP NET Core 3 1 后获取用户信息 如姓名 电子邮件 id 等信息 这是我在登录操作中的代码 var claims new List
  • C# - 当代表执行异步任务时,我仍然需要 System.Threading 吗?

    由于我可以使用委托执行异步操作 我怀疑在我的应用程序中使用 System Threading 的机会很小 是否存在我无法避免 System Threading 的基本情况 只是我正处于学习阶段 例子 class Program public
  • 为什么 C# 2.0 之后没有 ISO 或 ECMA 标准化?

    我已经开始学习 C 并正在寻找标准规范 但发现大于 2 0 的 C 版本并未由 ISO 或 ECMA 标准化 或者是我从 Wikipedia 收集到的 这有什么原因吗 因为编写 审查 验证 发布 处理反馈 修订 重新发布等复杂的规范文档需要
  • 如何在当前 Visual Studio 主机内的 Visual Studio 扩展中调试使用 Roslyn 编译的代码?

    我有一个 Visual Studio 扩展 它使用 Roslyn 获取当前打开的解决方案中的项目 编译它并从中运行方法 程序员可以修改该项目 我已从当前 VisualStudioWorkspace 成功编译了 Visual Studio 扩
  • C# 动态/expando 对象的深度/嵌套/递归合并

    我需要在 C 中 合并 2 个动态对象 我在 stackexchange 上找到的所有内容仅涵盖非递归合并 但我正在寻找能够进行递归或深度合并的东西 非常类似于jQuery 的 extend obj1 obj2 http api jquer
  • 编译时展开 for 循环内的模板参数?

    维基百科 here http en wikipedia org wiki Template metaprogramming Compile time code optimization 给出了 for 循环的编译时展开 我想知道我们是否可以
  • C++ 中的 include 和 using 命名空间

    用于使用cout 我需要指定两者 include
  • C# 中最小化字符串长度

    我想减少字符串的长度 喜欢 这串 string foo Lorem ipsum dolor sit amet consectetur adipiscing elit Aenean in vehicula nulla Phasellus li
  • 为什么 std::uint32_t 与 uint32_t 不同?

    我对 C 有点陌生 我有一个编码作业 很多文件已经完成 但我注意到 VS2012 似乎有以下语句的问题 typedef std uint32 t identifier 不过 似乎将其更改为 typedef uint32 t identifi
  • 指针和内存范围

    我已经用 C 语言编程有一段时间了 但对 C 语言还是很陌生 有时我对 C 处理内存的方式感到困惑 考虑以下有效的 C 代码片段 const char string void where is this pointer variable l
  • Mono 应用程序在非阻塞套接字发送时冻结

    我在 debian 9 上的 mono 下运行一个服务器应用程序 大约有 1000 2000 个客户端连接 并且应用程序经常冻结 CPU 使用率达到 100 我执行 kill QUIT pid 来获取线程堆栈转储 但它总是卡在这个位置
  • 使用 WGL 创建现代 OpenGL 上下文?

    我正在尝试使用 Windows 函数创建 OpenGL 上下文 现代版本 基本上代码就是 创建窗口类 注册班级 创建一个窗口 choose PIXELFORMATDESCRIPTOR并设置它 创建旧版 OpenGL 上下文 使上下文成为当前

随机推荐

  • jQuery Ready 回调的调用顺序

    如果页面中有两个 javaScript 函数 则需要在文档加载完成时调用它们 是否有可能任何函数都可以首先执行 或者它总是第一个首先执行的函数 因此 如果使用 jQuery 如果您有以下代码 document ready function
  • 动态加载Javascript文件和加载完成事件

    今天我一直致力于加载动态 javascript 代码 文件 我使用的解决方案是 function loadScript scriptUrl var head document getElementsByTagName head 0 var
  • Xamarin.Forms 将数据从设备特定代码返回到表单

    我尝试从 Xamarin Forms 代码中获取当前位置 但没有成功 我尝试过Xamarin Forms 移动服务从他们的示例代码 在这里找到http github com aritchie acr xamarin forms 但是它非常复
  • 在android中将图像存储到SQLite中

    我想将图像存储在 SQLite 数据库中 该图像是从 SD 卡中选择的 在谷歌搜索后我发现BLOB是在数据库中存储图像的方式 this link随后插入 但它对我不起作用 如何将图像转换为blob 如何以 blob 格式将图像存储在数据库中
  • 当标识符存在时,“接收者没有与标识符的连接”

    对于 iOS 应用程序 我有一个故事板和多个控制器 以及从控制器开始的转场游戏类至控制器设置类 Segue 在控制器视图中游戏类有一个名为游戏设置 然而 当我想从我的游戏类 self performSegueWithIdentifier G
  • 在 Objective-C 中,方法的绑定真的发生在“运行时”吗?

    听说Objective C受到了SmallTalk的 消息传递机制 的影响 Objective C 和 Smalltalk 一样 可以使用动态类型 一个对象可以是 发送了一条未在其接口中指定的消息 这可以让 为了增加灵活性 因为它允许对象
  • 将 PictureBox 内的图片移动到另一个 PictureBox

    如何将一个图片框内的图片移动到另一个图片框 我想用它来移动棋子 我为每个地方都有一个拍摄的图片盒 所以我有 64 个图片盒 你可以只分配Image将一个图片框显示到另一个图片框 如果您随后想要从原始图片框中删除该图像 以便它不会显示两次 您
  • CSS3/JS 在动画期间获取元素的位置

    我需要获取元素的位置 使用 jQuery mydiv position left 不过我需要在期间这样做css3 translate animation div 位置的动画翻译包含在position data 是否可以在动画期间获取元素的位
  • PHP 将磁盘上的文件输出到浏览器

    我想用 PHP 向浏览器提供现有文件 我看过有关 image jpeg 的示例 但该函数似乎将文件保存到磁盘 您必须首先创建一个正确大小的图像对象 或者我只是不明白它 在 asp net 中 我通过读取字节数组中的文件 然后调用 conte
  • Ada:gnat gprbuild 如何链接到库中?

    在我正在处理的这个多语言 GPRBuild 项目中 我有一些 C 库文件 a 我需要链接到我的可执行文件中 是否有 gpr 属性告诉它链接什么或无论如何将 l L 开关传递给链接器 或者甚至更好 Project my library is
  • JSF:更可定制的 selectManyCheckbox 和 selectOneRadio

    我正在使用 selectManyCheckboxes 和 selectOneRadios 我想以某种方式自定义它们 如果可以根据某个属性对 selectItems 进行分组 例如 每个组有一个标题或每个组之间有一条线 那就足够了 有没有办法
  • 为 PostgreSQL 设置 lc_monetary

    我该如何设置lc monetary以显示money docs 数据类型为欧元 I tried change postgresql conf并设置lc monetary de DE UTF 8 euro PG 不会因此更改而启动 当前设置为e
  • 尝试使用 Microsoft.Office.Interop.Excel.Workbooks.Open() 打开 Excel 时出现异常 HResult 0x800a03ec

    如果我尝试在客户端计算机上打开 Excel 文件 则会引发以下异常 Exception from HRESULT 0x800A03EC 内部异常 空 堆栈跟踪 at Microsoft Office Interop Excel Workbo
  • enumerateObjectsUsingBlock: 的 BOOL *stop 参数有何用途?

    我一直在使用enumerateObjectsUsingBlock 最近为了我的快速枚举需求 我很难理解BOOL stop在枚举块中 The NSArray类参考状态 stop 对布尔值的引用 该块可以将值设置为YES到 停止对数组的进一步处
  • IE 中的 UpdatePanel 速度缓慢

    我正在开发一个 ASP Net 应用程序 并致力于向其中添加一些 Ajax 以加快某些区域的速度 我关注的第一个领域是教师报告孩子们的出勤情况 以及一些其他数据 的出勤区域 这需要很快 我创建了一个双控件设置 用户单击图标 然后通过 Jav
  • woocommerce_form_field 和隐藏字段

    我正在尝试将自定义字段添加到 WooCommerce 结帐中 但似乎没有隐藏字段的输出 In woocommerce template php 隐藏字段属于这种开关情况 default field apply filters woocomm
  • xgboost:线性增强器gblinear使用了哪些参数?

    在网上查看时 我仍然对线性助推器感到困惑gblinear正是 我不是alone 继文档它只有 3 个参数lambda lambda bias and alpha 也许应该说 附加参数 如果我正确理解这一点 那么线性增强器会 相当标准 线性增
  • 如何使用 Python 打开和处理存储在 Google Cloud Storage 中的 CSV 文件

    我正在使用 Google 云存储客户端库 我正在尝试使用以下代码打开并处理 CSV 文件 已上传到存储桶 filename
  • 如何通过 Jinja2 将列表从 Python 传递到 JavaScript

    假设我有一个 Python 变量 list of items 1 2 3 4 5 我通过渲染 HTML 将它传递给 Jinja 并且我在 JavaScript 中还有一个函数 称为somefunction variable 我正在尝试通过每
  • 如何调试潜在的内存泄漏?

    我对 Windows 服务进行了编程来完成日常工作 I InstallUtil它到 Windows 服务 它会醒来并做一些事情 然后thread sleep 5min The code is simple but I ve noticed