【发布时间】:2016-08-21 11:01:44
【问题描述】:
堆栈溢出。我用 C#(光线追踪器)编写了一个应用程序。问题不在于光线追踪器,而在于光线使用。随着时间的推移,应用程序会不断消耗更多的内存。
在不进行光线追踪的情况下使用内存:从 10mb 开始会上升
光线追踪时使用内存:如果分辨率很大,则从 80mb 开始,然后 120mb 及以上 这个数字最大为 500mb。
我查看了 VS 诊断工具,发现应用程序垃圾收集就像 10 gc 在 1 分钟内。当应用程序进行光线追踪时,这个数字甚至更大。 Raytracer 返回一个巨大的像素阵列。我在光线追踪后将像素数组设置为空,但应用程序内存卡在 500-600 mb 内存的范围内。
有没有办法收集更多垃圾或空闲内存?
编辑 这是一个 WinForms 应用程序,不是 WPF 什么的。
【问题讨论】:
-
为什么 500MB 太多 ?它会在有用时将 mem 返回到系统。您正在查看错误的数字。
-
光线追踪时500mb并不多,即使光线追踪后500mb仍然存在于程序内存中。
-
@Yahya Gedik,使用内存分析器,例如,dotMemory,以获取更多详细信息。您可能有内存泄漏。
标签: c# garbage-collection raytracing