2015-10-15 20 views
0

請問下面的輸出顯示內存泄漏?
我的工人服務器運行內存不足。雖然它是一個穩定的分配,但它在執行後沒有釋放內存。這是狂飲中間件內存泄漏?

這裏是問題https://github.com/guzzle/oauth-subscriber/issues/47#issuecomment-148480943

use GuzzleHttp\HandlerStack; 
use GuzzleHttp\Subscriber\Oauth\Oauth1; 

function stack_it() 

{ 
    $stack = HandlerStack::create(); 

    $middleware = new Oauth1([ 
    'consumer_key' => NULL, 
    'consumer_secret' => NULL, 
    'token'   => NULL, 
    'token_secret' => NULL, 
    ]); 
    $stack->push($middleware, 'oauth_1'); 

    $stack->remove('oauth_1'); 
} 

echo 'initial: '.memory_get_usage().PHP_EOL; 
for ($i=0; $i < 20; $i++) 
{ 
    $this->stack_it(); 

    gc_collect_cycles(); 
    echo memory_get_usage().PHP_EOL; 
} 

die(); 

輸出

initial: 3818976 
4282040 
4282040 
4282040 
4282040 
... 
4282040 
4282040 
4282040 
4282040 

回答

1

你所看到的是HandlerStack的正常內存消耗。我是指你的源HandlerStack。每次連續迭代都不會增加內存使用量的事實表明沒有泄漏。

你會發現,當HandlerStack::create()被調用,餅乾,HTTP錯誤例外,redictions,並在發送之前準備身體支撐被添加到處理器。