我有下一个非常奇怪的情况和问题:
用于图表编辑 (WPF) 的 .NET 4.0 应用程序。
在我的 PC 上运行正常:8GB RAM,3.0GHz,i7 四核。
在创建对象(主要是图表节点和连接器,以及所有撤消/重做信息)时,TaskManager 显示,正如预期的那样,一些内存使用“跳跃”(向上和向下)。
在用户交互结束后,这些内存使用“跳转”也会继续执行。也许这是 GC 清理/重组内存?
为了查看发生了什么,我使用了 Ants 内存分析器,但它在某种程度上阻止了在用户交互之后发生这些“跳跃”。
问题:在我的 beta 测试人员的一些慢速/弱笔记本电脑/上网本(速度低于 2GHz 和 RAM 低于 2GB)中使用几秒钟或几分钟后,它会冻结/挂起。我在考虑内存泄漏,但是...
编辑1:此外,内存使用量会不断增长直到崩溃(仅在慢速机器中)。
- 在仅分配了 512MB RAM 的 Windows XP Mode 机器(Win 7 中的 VM)中,它可以在用户交互后没有内存使用“跳跃”的情况下正常工作(没有 GC 清理?!)。
编辑 2:当系统运行其他一些繁重的程序(如 Visual Studio、Office 和网页打开)时,问题会更糟。甚至连图表的第一个符号都无法创建,因为内存使用量像火箭一样飞向太空(数百 MB 在几秒钟内消耗)。有类似经历的人吗?他们的策略是什么?
所以,我真的遇到了很大的麻烦,因为我无法重现错误,只能看到这些奇怪的行为(内存跳跃),而应该向我展示正在发生的事情的工具却隐藏了问题(如“观察者悖论”)。
关于正在发生的事情以及如何解决它的任何想法?
编辑 3:Ants 内存分析器的此屏幕截图显示,如果来自非托管资源,则会大量消耗 ram(渐强)。
但是,什么东西能消耗这么多内存,这么快????!!!