0

我遇到了似乎是内存泄漏的问题。当我运行我的代码时,内存使用量不断增加,直到应用程序崩溃。

我一直在使用 GC.start 来确保删除所有未使用的对象。我也在使用 ObjectSpace 模块来追踪罪魁祸首,但我无法理解发生了什么。

在此文件https://www.dropbox.com/s/0j75ylcsj3rs0ro/Log_1.txt中,我记录了 ObjectSpace count_objects 的输出。该命令的第一个输出在一个大的 for 循环之前。在每个循环结束时,我使用 GC.start。据我所见,在 for 循环期间对象的总数保持不变,但应用程序使用的内存不断增加。

代码的精简版本位于此链接https://www.dropbox.com/s/5fnludxurs1ljy8/Shading.rb

4

1 回答 1

1

问题解决了!我了解到,如果您使用带有大写字母的变量,它们被视为常量,显然,即使您重新分配它们,内存也永远不会被释放。我有 5 个以大写字母开头的变量,我在循环中重新分配了几百万次。改成小写就解决了这个问题。没有更多的内存问题。

于 2014-08-12T08:54:13.457 回答