我有一个由多个组件组成的应用程序,每个组件都编译成单个 DLL,每个组件都在其内部运行多个线程。我有一个启动这些组件的 shell 程序。
我在 Windows CE 6 环境中运行这个应用程序,这是它上面唯一的程序(除了系统的程序)。但是,随着时间的推移,当我查看任务管理器窗口时,我发现分配的内存使用量缓慢增加。怀疑我的程序可能有内存泄漏,我执行以下操作。
我转到一个特定组件并创建一个每 30 分钟运行一次的 Timer 对象,该对象调用以下代码:
long memByte = GC.GetTotalMemory(false);
Console.Write("Heap Memory: " + (memByte/1000).ToString() + "KB");
通过在互联网上阅读,我认为 GetTotalMemory 基本上为我提供了系统的总管理内存。如果我的程序没有内存泄漏问题,那么我怀疑在绘制结果时我会得到某种类型的平线。否则我会看到一个缓慢的增长。
我的问题是,GetTotalMemory 实际上给了我所有应用程序的总管理堆内存,还是只给了运行此代码的当前组件正在使用的特定堆?
谢谢,