Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Memory leaks WebTestCase或Symfony2内核内存泄漏-如何向专家报告?_Memory Leaks_Symfony - Fatal编程技术网

Memory leaks WebTestCase或Symfony2内核内存泄漏-如何向专家报告?

Memory leaks WebTestCase或Symfony2内核内存泄漏-如何向专家报告?,memory-leaks,symfony,Memory Leaks,Symfony,我想我在WebTestCase类或内核本身中发现了内存泄漏。我的问题在最后 为了重现,我创建了一个新的空WebTestCase,它执行$max断言(在我的测试中,$max范围从1到100.000),而不实例化任何内核 <?php use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; class DemoTest extends WebTestCase { public function testHello( ) {

我想我在WebTestCase类或内核本身中发现了内存泄漏。我的问题在最后

为了重现,我创建了一个新的空WebTestCase,它执行$max断言(在我的测试中,$max范围从1到100.000),而不实例化任何内核

<?php
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
class DemoTest extends WebTestCase
{
    public function testHello(  )
    {
        $max = 100000;
        for( $i = 0; $i < 1; $i++ )
        {
            $this->assertTrue( true );
        }
    }
}
最高$100000

Time: 1 second, Memory: 5.75Mb
OK (1 test, 100000 assertions)
Time: 2 seconds, Memory: 5.75Mb
OK (1 test, 100000 assertions)
Time: 9 seconds, Memory: 165.50Mb
OK (1 test, 100000 assertions)
正如预期的那样,无论运行1次还是100.000次,我都会消耗相同的内存

现在我尝试创建任意类的循环,使用它并销毁它。我选择DOMDocument的方式与选择任何其他类的方式相同

    public function testHello(  )
    {
        $max = 100000;
        for( $i = 0; $i < $max; $i++ )
        {
            $dummy = new \DOMDocument();
            $dummy->loadHTML( '<html><head><title>dummy</title></head><body>dummy</body></html>' );
            unset( $dummy );
            $this->assertTrue( true );
        }
    }
最高$100000

Time: 1 second, Memory: 5.75Mb
OK (1 test, 100000 assertions)
Time: 2 seconds, Memory: 5.75Mb
OK (1 test, 100000 assertions)
Time: 9 seconds, Memory: 165.50Mb
OK (1 test, 100000 assertions)
同样,无论执行1次还是100.000次,我都会消耗相同的内存

但是。。。现在我在循环中创建和销毁内核。我既不执行->boot()也不执行->shutdown(),只获取新的内核对象,这些对象甚至在没有启动的情况下,也不会被引用,因此它们应该释放所有资源

    public function testHello(  )
    {
        $max = 10000;
        for( $i = 0; $i < $max; $i++ )
        {
            $dummy = static::createKernel();
            unset( $dummy );
            $this->assertTrue( true );
        }
    }
最高$100000

Time: 1 second, Memory: 5.75Mb
OK (1 test, 100000 assertions)
Time: 2 seconds, Memory: 5.75Mb
OK (1 test, 100000 assertions)
Time: 9 seconds, Memory: 165.50Mb
OK (1 test, 100000 assertions)
它从5.75提高到6.25是合乎逻辑的,这可能是内核资源的大小。半百万。但不正确的是,通过创建10万个内核而不进行任何操作,我们往往会消耗165兆。有人正在释放它分配的资源

我的问题是:

  • 这是个漏洞吗?或者是预期的行为,出于任何额外的原因,我不明白为什么要这样做
  • 我使用2.0.10。如果是泄漏,我如何知道在以后的版本中是否已更正
  • 如果没有纠正,向核心团队报告最简单的方法是什么
谢谢!
Xavi。

Symfony2代码托管在github.com上,必须在此网站上声明问题

我在繁重的web测试用例中也遇到了这种问题,并且在2.0.x版本中没有修复。我不能确定这是内存泄漏还是正常行为

  • 谷歌开发者小组:
  • 谷歌用户群:
  • Symfony2论坛:

我向您推荐Google Groups邮件列表,然后是GitHub问题。

在将其作为bug提交之前,是否有任何类型的“开发者邮件列表”来讨论它并区分它是bug还是功能?谢谢