C#应用程序内存泄漏

C#应用程序内存泄漏,c#,windows,dll,memory-leaks,taskmanager,C#,Windows,Dll,Memory Leaks,Taskmanager,我想询问有关我的C#应用程序内存泄漏的问题。我创建了一个用于获取数据并将数据存储到数据库中的应用程序。我的应用程序通过特殊的DLL库(使用WINAPI)与另一个应用程序(用于测量的客户端)通信。DLL库用作TCP接口 但是,我有内存泄漏(我确定,问题是我的应用程序): 经过较长时间(每天24小时测量几天)后,我打开task manager并: Windows任务管理器中的物理内存已满(在内存已满的情况下运行较长时间后,计算机工作非常缓慢或冻结) 我的应用程序使用大约100MB的RAM(与启动时

我想询问有关我的C#应用程序内存泄漏的问题。我创建了一个用于获取数据并将数据存储到数据库中的应用程序。我的应用程序通过特殊的DLL库(使用WINAPI)与另一个应用程序(用于测量的客户端)通信。DLL库用作TCP接口

但是,我有内存泄漏(我确定,问题是我的应用程序):

经过较长时间(每天24小时测量几天)后,我打开task manager并:

  • Windows任务管理器中的物理内存已满(在内存已满的情况下运行较长时间后,计算机工作非常缓慢或冻结)
  • 我的应用程序使用大约100MB的RAM(与启动时相同,不增加)
  • 测量应用程序使用大约120MB的RAM(与启动时相同,不增加)
  • 任务管理器中的另一个进程可以忽略不计
我不知道我在哪里丢失了大约4GB的RAM(当我比较TaskManager中运行进程的列表和可用物理内存的摘要时)

我尝试了ProcessExplorer,但没有结果

问题1: 在任务管理器中,我的应用程序的内存信息中不计算运行在我的应用程序中的某些线程,这是否可能

问题2: 如果DLL使用一些物理内存,并且我的应用程序正在通过WINAPI调用DLL,那么该DLL的已用内存量将计算在哪里? -我的申请。。。或者在哪里-我怎么能看到它


谢谢你的每一个帮助

您是否尝试过使用内存分析器评测应用程序?创建两个快照,一个在应用程序启动后创建,另一个在工作1小时后创建。然后比较这些快照,这样你就可以知道你的应用程序是否会泄漏内存,如果是的话,具体在哪里。谢谢你的提示,我正准备尝试一下。我已经安装了.NET内存配置文件。这个问题可能会有所帮助:您还可以从任务管理器获取内存转储(右键单击一个过程=>选择创建转储文件)。并在vs2015中导入内存转储。您可以看到对象计数以及哪个对象消耗更多内存。这就是我的问题。