【发布时间】:2018-05-03 07:26:15
【问题描述】:
我有一个 .net Windows 服务应用程序,它在启动时会分配服务器上的所有现有内存。在内存分析之后,我可以看到,在第 2 代堆中分配的内存中有 90% 是空闲的。碎片化率为 100%
在我的工作站上通过 .exe 运行应用程序不会产生相同的结果。这里的内存分配接缝正常。
我尝试强制每 5 秒进行一次 GC,以查看 GC 是否存在问题。同样的问题
我的问题 1. 什么情况下会导致内存碎片? 2. 有没有办法配置 Windows 服务使其表现得像我的桌面? 3. 我该如何去找出问题的原因?
非常感谢
【问题讨论】:
-
“90% 的分配内存在 Gen2 堆中是空闲的”是什么意思?内存是空闲的还是分配的?如果它是免费的,它不在 Gen2 中。
标签: c# .net memory-management heap-memory