Memory leaks 堆生成2和大型对象堆爬升

Memory leaks 堆生成2和大型对象堆爬升,memory-leaks,garbage-collection,jetbrains-ide,Memory Leaks,Garbage Collection,Jetbrains Ide,我不确定我是否发布到了正确的StackOverFlow论坛,但这里是 我有一个C#桌面应用程序。它接收来自4个模拟摄像机的图像,并尝试检测运动,如果是,则保存运动 当我让应用程序运行一个24小时的周期时,我注意到TaskManager中的私有工作集几乎增加了500% 现在,我知道使用任务管理器不是一个好主意,但它确实会给我一个指示,如果有什么问题 为此,我从JetBrains购买了dotMemory profiler 我使用了它的工具来确定堆第2代的大小增加了很多。然后,在较小程度上,大型对象堆

我不确定我是否发布到了正确的StackOverFlow论坛,但这里是

我有一个C#桌面应用程序。它接收来自4个模拟摄像机的图像,并尝试检测运动,如果是,则保存运动

当我让应用程序运行一个24小时的周期时,我注意到TaskManager中的私有工作集几乎增加了500%

现在,我知道使用任务管理器不是一个好主意,但它确实会给我一个指示,如果有什么问题

为此,我从JetBrains购买了dotMemory profiler

我使用了它的工具来确定堆第2代的大小增加了很多。然后,在较小程度上,大型对象堆也是如此

后者令人惊讶,因为图像大小为360x238,字节数组大小始终小于20K

因此,我的问题是:

例如,我应该显式调用GC.Collect(2)吗?
我是否应该担心我的应用程序是造成这种情况的原因?

Andrew,我的建议是在dotMemory中拍摄内存快照,而不是探索它以找到保留大部分内存的内容。我会帮助你的。如果您对GC.Collect不确定,您可以点击“强制GC”按钮,它将收集应用程序中的所有可用垃圾。

Andrew,我的建议是在dotMemory中拍摄内存快照,而不是浏览它以找到保留大部分内存的内容。我会帮助你的。如果您对GC.Collect不确定,您可以点击“强制GC”按钮,它将收集应用程序中的所有可用垃圾。

Andrew,我的建议是在dotMemory中拍摄内存快照,而不是浏览它以找到保留大部分内存的内容。我会帮助你的。如果您对GC.Collect不确定,您可以点击“强制GC”按钮,它将收集应用程序中的所有可用垃圾。

Andrew,我的建议是在dotMemory中拍摄内存快照,而不是浏览它以找到保留大部分内存的内容。我会帮助你的。如果你不确定GC.Collect,你可以点击“强制GC”按钮,它将收集你应用程序中所有可用的垃圾。

嗨,是的,我做了强制GC,它没有任何影响,这很奇怪,因为它应该强制关闭,我会想?我现在来看视频。谢谢:)嗨,是的,我做了强制GC,它没有任何影响,这是奇怪的,因为它应该迫使它下来,我会想?我现在来看视频。谢谢:)嗨,是的,我做了强制GC,它没有任何影响,这是奇怪的,因为它应该迫使它下来,我会想?我现在来看视频。谢谢:)嗨,是的,我做了强制GC,它没有任何影响,这是奇怪的,因为它应该迫使它下来,我会想?我现在来看视频。谢谢:)