C# 托盘应用程序在xp中占用40mb,在win7中占用10mb

C# 托盘应用程序在xp中占用40mb,在win7中占用10mb,c#,memory,system-tray,C#,Memory,System Tray,我在C#(.NET3.5)中开发了一个小应用程序,它在系统托盘中运行。基本上,它只需每5分钟检查一次rss提要,如果自上次检查以来有新的提要,它会显示一个气球提示,并使用.net 3.0/3.5中的文本到语音引擎来读取获取的提要的标题 它工作正常,但我注意到在Windows7上运行时需要9-10mb,而在XP中需要39-40mb。 我不知道为什么。有人知道这可能是什么吗?可能是因为windows 7在某些组件中使用了.net,因此进程和系统之间共享了大量内存 在XP中,系统的某个进程没有加载所有

我在C#(.NET3.5)中开发了一个小应用程序,它在系统托盘中运行。基本上,它只需每5分钟检查一次rss提要,如果自上次检查以来有新的提要,它会显示一个气球提示,并使用.net 3.0/3.5中的文本到语音引擎来读取获取的提要的标题

它工作正常,但我注意到在Windows7上运行时需要9-10mb,而在XP中需要39-40mb。
我不知道为什么。有人知道这可能是什么吗?

可能是因为windows 7在某些组件中使用了.net,因此进程和系统之间共享了大量内存


在XP中,系统的某个进程没有加载所有.Net程序集,因此内存在进程中显示为私有。

您是从taskmanager中的Mem Usage(内存使用)列读取的吗?然后您将看到工作集的大小。加载到RAM中的应用程序使用的活动内存量。这可能不是您想要比较的。尝试最小化您的应用程序。看看Mem的使用率是如何显著下降的。这并不意味着一旦最小化内存,应用程序就会使用更少的内存。这意味着Windows认为您不会很快使用该应用程序,并将内存从RAM交换到分页文件。您可能希望签出VM Size列进行比较。当然,您仍然可以问自己为什么工作集大小不同,但这个问题很难回答。另请参阅以了解不同内存读数的说明。

您可以使用Sysinternals()中的VmMap或(更高级的工具)带有SOS扩展的WinDBG检查流程的内存使用情况。