我们的应用现在效果不佳。当我们查看perfmonance时,我们发现Garbage收集时间是执行时间的95%。但与此同时,我们的所有内存使用率都非常低 - 我们有很多可用内存,如TaskManager所示。这是为什么?我认为当内存压力很高时,垃圾收集器才会忙碌。
答案 0 :(得分:1)
来自wiki:Garbage collection
Garbage Collection (GC)
是一种自动内存管理方式。垃圾收集器或仅收集器尝试回收垃圾或由程序不再使用的对象占用的内存。
如果要分配内存并且无法解除分配,那么垃圾收集器就会出现。检查您的代码,并确保您分配的内存在超出范围时被解除分配。
答案 1 :(得分:0)
任务管理器内存读数可能与分配给特定虚拟机的实际内存完全无关。
答案 2 :(得分:0)
可能你要分配很多东西,可以释放很多对象。使用Allocation Tracker跟踪内存分配并尝试尽可能少地分配。您甚至可以在应用程序的开头分配所有内容,之后不会分配任何内容。这样你就不会“引诱”调用GC。
答案 3 :(得分:0)
不要使用任何.net相关的memroy查看器来查看任务管理器。通过它你会发现garabage收集器何时何地开始行动。我认为这可能是因为你可能有内存泄漏,尝试使用一些工具关于你的应用程序是否存在泄漏,以获得更好的想法。