以下两种方法是否会导致堆空间耗尽?

时间:2013-01-22 19:36:37

标签: java scala

建议成为一个关于空间不足的新问题:

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

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

所以在这种情况下,如果沿途的图形在不断增长和增长,它是否会导致堆积不足?

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

有一个对象用于存储所有静态信息,是否会导致问题?

2 个答案:

答案 0 :(得分:3)

  

所以在这种情况下,如果沿途的图形在不断增长和增长,它是否会导致堆积不足?

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

实际上,尽管你很可能因为一个错误而用完了堆,并且错过了结束条件并且无限循环结束。

如果您正在创建图表的多个副本 - 即如果每个recutsion创建了一个新的深层副本并在它递归调用时保持它 - 那么您将更快地耗尽内存。

答案 1 :(得分:3)

您是否考虑过使用Graph for Scala库?它将为您在项目的图形表示部分提供相当大的支持。你可以找到它的PDF documents here