Skip to content

Instantly share code, notes, and snippets.

@attozk
Last active August 29, 2015 14:09
Show Gist options
  • Save attozk/e77987fd01488db836b6 to your computer and use it in GitHub Desktop.
Save attozk/e77987fd01488db836b6 to your computer and use it in GitHub Desktop.
Evenement not freeing up memory?
<?php
$loader = include __DIR__ . '/../vendor/autoload.php';
$loop = React\EventLoop\Factory::create();
$counter = 0;
$timer = $loop->addPeriodicTimer(10, function() use(&$timer, &$counter) {
$counter++;
$type = 'None';
if ($counter > 1 && $counter <= 6) {
$type = 'Arr Numbers';
$queue = [];
$queue[$counter] = [];
for ($i = 0; $i < 100000; $i++) {
$queue[$counter] = rand(1,9999);
}
unset($queue);
}
else if ($counter > 7 && $counter <= 12) {
$type = 'Arr Objects';
$queue = [];
$queue[$counter] = [];
for ($i = 0; $i < 100000; $i++) {
$o = new stdClass();
$queue[$counter] = $o;
}
unset($queue);
}
else if ($counter > 13 && $counter <= 18) {
$emitter = [];
$emitter[$counter] = new \Evenement\EventEmitter();
$type = 'Evenement';
for ($i = 0; $i < 10000; $i++) {
$rand = $counter . ':' . $i . ':' . rand(1, 1000);
$emitter[$counter]->on('event1' . $rand, function () {});
$emitter[$counter]->on('event2' . $rand, function () {});
$emitter[$counter]->once('event3' . $rand, function () {});
}
// try unsetting manually?
//foreach ($emitter[$counter]->listeners as $i => $listener) {
// unset($emitter[$counter]->listeners[$i]);
//}
$emitter[$counter]->removeAllListeners();
unset($emitter);
}
echo
'Counter: ' . $counter . "\n" .
'Type: ' . $type . "\n" .
'Memory: ' . round(memory_get_usage() / 1024 / 1024, 2) . " MB\n" .
'Memory True: ' . round(memory_get_usage(true) / 1024 / 1024, 2) . " MB\n" .
'Peak Memory: ' . round(memory_get_peak_usage() / 1024 / 1024, 2) . "MB \n" .
'Peak Memory True : ' . round(memory_get_peak_usage(true) / 1024 / 1024, 2) . "MB \n" . "\n\n";
if ($counter > 20)
die;
});
$loop->run();
/** outputs *//
Counter: 1
Type: None
Memory: 0.29 MB
Memory True: 0.5 MB
Peak Memory: 0.38MB
Peak Memory True : 0.5MB
Counter: 2
Type: Arr Numbers
Memory: 0.29 MB
Memory True: 0.5 MB
Peak Memory: 0.38MB
Peak Memory True : 0.5MB
Counter: 3
Type: Arr Numbers
Memory: 0.29 MB
Memory True: 0.5 MB
Peak Memory: 0.38MB
Peak Memory True : 0.5MB
Counter: 4
Type: Arr Numbers
Memory: 0.29 MB
Memory True: 0.5 MB
Peak Memory: 0.38MB
Peak Memory True : 0.5MB
Counter: 5
Type: Arr Numbers
Memory: 0.29 MB
Memory True: 0.5 MB
Peak Memory: 0.38MB
Peak Memory True : 0.5MB
Counter: 6
Type: Arr Numbers
Memory: 0.29 MB
Memory True: 0.5 MB
Peak Memory: 0.38MB
Peak Memory True : 0.5MB
Counter: 7
Type: None
Memory: 0.29 MB
Memory True: 0.5 MB
Peak Memory: 0.38MB
Peak Memory True : 0.5MB
Counter: 8
Type: Arr Objects
Memory: 0.29 MB
Memory True: 0.5 MB
Peak Memory: 0.38MB
Peak Memory True : 0.5MB
Counter: 9
Type: Arr Objects
Memory: 0.29 MB
Memory True: 0.5 MB
Peak Memory: 0.38MB
Peak Memory True : 0.5MB
Counter: 10
Type: Arr Objects
Memory: 0.29 MB
Memory True: 0.5 MB
Peak Memory: 0.38MB
Peak Memory True : 0.5MB
Counter: 11
Type: Arr Objects
Memory: 0.29 MB
Memory True: 0.5 MB
Peak Memory: 0.38MB
Peak Memory True : 0.5MB
Counter: 12
Type: Arr Objects
Memory: 0.29 MB
Memory True: 0.5 MB
Peak Memory: 0.38MB
Peak Memory True : 0.5MB
Counter: 13
Type: None
Memory: 0.29 MB
Memory True: 0.5 MB
Peak Memory: 0.38MB
Peak Memory True : 0.5MB
Counter: 14
Type: Evenement
Memory: 4.52 MB
Memory True: 10.75 MB
Peak Memory: 39.05MB
Peak Memory True : 40MB
Counter: 15
Type: Evenement
Memory: 4.54 MB
Memory True: 13.25 MB
Peak Memory: 39.05MB
Peak Memory True : 40MB
Counter: 16
Type: Evenement
Memory: 4.56 MB
Memory True: 15.25 MB
Peak Memory: 39.05MB
Peak Memory True : 40MB
Counter: 17
Type: Evenement
Memory: 4.58 MB
Memory True: 17 MB
Peak Memory: 39.06MB
Peak Memory True : 40MB
Counter: 18
Type: Evenement
Memory: 4.6 MB
Memory True: 20.25 MB
Peak Memory: 39.06MB
Peak Memory True : 40MB
Counter: 19
Type: None
Memory: 4.6 MB
Memory True: 20.25 MB
Peak Memory: 39.06MB
Peak Memory True : 40MB
Counter: 20
Type: None
Memory: 4.6 MB
Memory True: 20.25 MB
Peak Memory: 39.06MB
Peak Memory True : 40MB
Counter: 21
Type: None
Memory: 4.6 MB
Memory True: 20.25 MB
Peak Memory: 39.06MB
Peak Memory True : 40MB
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment