我们应用程序的性能分析显示,在.NET内存管理需要分配内存时,CPU使用率达到了峰值。
尽管存在大量未使用的内存,但应用程序并未占用它们,而是在已经占用的内存中搜索可用空间。
是否可能在可以的情况下配置应用程序来占用更多内存?
这与应用程序是否托管在Citrix有关吗?
无论系统有多少可用内存,Windows应用程序都不能无限增长。
您可以在此处阅读有关实际限制的信息:https://msdn.microsoft.com/en-us/library/aa366778(VS.85).aspx#memory_limits
有关此问题的其他信息,请参见此处:http://www.codeproject.com/Articles/483475/Memory-Limits-in-a-NET-Process
如果应用程序接近其限制,它将在每次需要声明新内存时开始旋转垃圾回收器,以避免空间不足并因OutOfMemoryException而崩溃。同时释放和声明内存所需的额外努力对性能有很大的负面影响。
在什么时候您的应用程序停止声明新内存?接近1 Gb?2 Gb?64位应用程序能够使用更大量的内存,但这可能不是一个选择...
VirtualFree
,还是垃圾回收只是压缩了 SOH 中的一个?此外,你的慢分配是在 LOH 还是 SOH 上?” - Collin Dauphinee