Closed
Description
Symfony version(s) affected
4.4.41
Description
Upgrading from 4.4.40 to 4.4.41 introduces a memory leak.
How to reproduce
Have a Command with:
<?php
namespace App\Command;
use App\Entity\Product;
use Doctrine\ORM\AbstractQuery;
use Doctrine\ORM\EntityManagerInterface;
use Doctrine\ORM\Query;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
class TestCommand extends Command
{
protected static $defaultName = 'app:test';
private EntityManagerInterface $em;
public function __construct(EntityManagerInterface $em)
{
parent::__construct();
$this->em = $em;
}
protected function execute(InputInterface $input, OutputInterface $output): int
{
$repo = $this->em->getRepository(Product::class);
$qb = $repo->createQueryBuilder('t')->orderBy('t.id', 'ASC');
$batchSize = 5000;
$offset = 0;
$qb->setMaxResults($batchSize);
do {
$qb->setFirstResult($offset);
$records = $qb->getQuery()->getResult(AbstractQuery::HYDRATE_ARRAY);
foreach ($records as $record) {
$qb1 = $repo->createQueryBuilder('t')->where('t.id = :id')->setParameter('id', $record['id']);
$qb1->getQuery()->getSingleResult(Query::HYDRATE_ARRAY);
}
dump(sprintf('Memory used: %u MB', memory_get_usage(true) / 1048576));
$offset += $batchSize;
} while (!empty($records));
return 0;
}
}
Run it:
bin/console app:test --no-debug
Output with "symfony/framework-bundle": "4.4.40"
:
^ "Memory used: 40 MB"
^ "Memory used: 56 MB"
^ "Memory used: 56 MB"
^ "Memory used: 56 MB"
^ "Memory used: 56 MB"
^ "Memory used: 56 MB"
^ "Memory used: 56 MB"
^ "Memory used: 58 MB"
^ "Memory used: 56 MB"
^ "Memory used: 58 MB"
^ "Memory used: 56 MB"
^ "Memory used: 58 MB"
^ "Memory used: 58 MB"
^ "Memory used: 58 MB"
^ "Memory used: 58 MB"
^ "Memory used: 58 MB"
^ "Memory used: 58 MB"
^ "Memory used: 58 MB"
^ "Memory used: 58 MB"
^ "Memory used: 58 MB"
^ "Memory used: 58 MB"
^ "Memory used: 58 MB"
^ "Memory used: 58 MB"
^ "Memory used: 60 MB"
^ "Memory used: 58 MB"
^ "Memory used: 58 MB"
Output with "symfony/framework-bundle": "4.4.41"
:
^ "Memory used: 42 MB"
^ "Memory used: 56 MB"
^ "Memory used: 60 MB"
^ "Memory used: 62 MB"
^ "Memory used: 66 MB"
^ "Memory used: 70 MB"
^ "Memory used: 74 MB"
^ "Memory used: 76 MB"
^ "Memory used: 78 MB"
^ "Memory used: 82 MB"
^ "Memory used: 86 MB"
^ "Memory used: 88 MB"
^ "Memory used: 92 MB"
^ "Memory used: 96 MB"
^ "Memory used: 100 MB"
^ "Memory used: 102 MB"
^ "Memory used: 106 MB"
^ "Memory used: 108 MB"
^ "Memory used: 112 MB"
^ "Memory used: 114 MB"
^ "Memory used: 118 MB"
^ "Memory used: 120 MB"
^ "Memory used: 124 MB"
^ "Memory used: 126 MB"
^ "Memory used: 128 MB"
^ "Memory used: 128 MB"
Possible Solution
No response
Additional Context
No response