我想找到一种方法来分析我在 prolog 中编写的谓词(一个巨大的)的内存使用情况。我目前正在使用swi和yap运行它,我可以从这些进程的内存消耗中看到分配了大量内存。
问题是当谓词终止时它不会被释放/释放/垃圾收集(我必须停止解释器才能看到它)加上内存量只会在谓词运行时不断增长(无论它是否应该因为尾巴我猜,递归优化应该在每次迭代时缓解这个问题)。
有没有办法发现增加使用的内存的子谓词/调用并检查是否有效地调用了尾递归优化?
任何其他关于如何优化问题的建议将不胜感激。如果有必要,我将提供有关谓词正在做什么的更多详细信息。