我正在尝试优化使用 Symfony 2 表单在导入过程中验证数据的导入操作,有点像这个非常简化的示例:
/// For each imported row
foreach ($importedData as $row) {
$user = new User;
$userType = new UserType;
// !! The 250 KB of memory allotted in this line is never released again !!
$form = $symfonyFormFactory->create($userType, $user);
// This line allots a bunch of memory as well,
// but it's released when the EM is flushed at the end
$form->bind($row);
if (!$form->isValid()) {
// Error handling
}
$entityManager->persist($user);
$entityManager->flush();
}
这些循环中的每一个,内存使用量都增加了大约 250 KB,这对于大量导入来说是严重的。
我发现内存泄漏来自$form = $symfonyFormFactory->create(new UserType, $user);
线路。
编辑:实体管理器正在使用大部分内存,而不是表单组件(请参阅接受的答案)。但是每个循环仍然占用 55 KB,这比 250 KB 好,但可能会更好。只是今天没有。