原则2.1:刷新后内存使用量增加

mkk*_*mkk 2 php orm memory-leaks doctrine memory-management

这对我来说真的很直观,为什么在flush()之后内存增加而不是减少?我找不到任何有用的文档。我每隔50次循环刷新一次,每次刷新内存使用量增加1MB之后。100次冲洗将使用100MB!我在这里想念什么?我已经在doctrine的网站示例中看到了clear(),但是如果使用它,我会遇到一个例外,即我的对象之一没有级联持久化设置。谁能解释我在幕后做了什么,我应该怎么做才能正确地摆放所有教义的物体?

Rau*_*ets 5

另外,请在此处阅读:http : //docs.doctrine-project.org/en/2.0.x/reference/batch-processing.html

建议在每批操作之后使用$ em-> clear()。(其效果应与Besnik建议的效果相同)。

从前面提到的链接:

利用EntityManager的事务后写行为,最好在批处理中进行批量插入。以下代码显示了一个示例,该示例用于插入10000个批处理大小为20的对象。您可能需要尝试使用批处理大小来找到最适合您的大小。较大的批处理大小意味着内部准备好的语句重用率更高,但也意味着刷新期间需要进行更多工作。