0

正如建议的关于空间不足的新问题:

三个月前,我学会了编写 Scala 程序。我怀疑我编写程序的方式会导致堆空间,所以以下几点可以检查我是否可以:

  • 假设我正在构建一个带有节点和边的图表。“图”是函数的一个参数。该函数将探索传入的图形,并将图形扩展为新的图形。然后将新的图再次传入并递归调用函数重新探索,直到达到某些条件,才会返回最终版本的图。

那么在这种情况下,如果沿途的图不断增长,会不会导致out of heap?

  • 如果这是不好的做法,我应该如何有效地写内存?

有一个对象用来存储所有的静态信息,会不会出问题?

4

2 回答 2

3

那么在这种情况下,如果沿途的图不断增长,会不会导致out of heap?

这将取决于图表增长多少。在某些时候,如果您只是继续添加节点,那么它将耗尽堆空间。

实际上,尽管您很可能会因为错误而用完堆,并在无限循环中错过结束条件和结束。

如果您正在创建图形的多个副本——即,如果每个recution 创建一个新的深层副本并在它递归调用自身时保留它——那么您将很快耗尽内存。

于 2013-01-22T19:42:20.927 回答
3

您是否考虑过使用Graph for Scala库?它将为您的项目的图形表示部分提供相当大的帮助。您可以在此处找到其PDF 文档

于 2013-01-22T20:11:07.673 回答