Bug #74174 [NoF->Nab]: Memory allocation problem
Edit report at https://bugs.php.net/bug.php?id=74174&edit=1
ID: 74174
Updated by: requinix@php.net
Reported by: enleury at gmail dot com
Summary: Memory allocation problem
-Status: No Feedback
+Status: Not a bug
Type: Bug
Package: Performance problem
Operating System: Ubuntu
PHP Version: 7.1.2
Assigned To: dmitry
Block user comment: N
Private report: N
New Comment:
.
Previous Comments:
------------------------------------------------------------------------
[2017-03-12 04:22:29] php-bugs at lists dot php dot net
No feedback was provided. The bug is being suspended because
we assume that you are no longer experiencing the problem.
If this is not the case and you are able to provide the
information that was requested earlier, please do so and
change the status of the bug back to "Re-Opened". Thank you.
------------------------------------------------------------------------
[2017-02-28 10:23:35] dmitry@php.net
yes. I forgot, we exposed MM GC to user-level :)
Actually, even this function may keep one (or maybe few) unused chunk(s) cached.
Zend MM was highly tuned especially for typical real-life usage, but any suggestions for improvement
are welcome.
------------------------------------------------------------------------
[2017-02-28 07:59:48] enleury at gmail dot com
Thank you for clarification. Is gc_mem_caches() the only way to free up chunks?
------------------------------------------------------------------------
[2017-02-27 22:16:07] dmitry@php.net
This is not a bug.
If you compare peak memory usage, PHP-7 wins.
PHP-7 just manages memory differently.
It allocates system memory by bigger chunks (2MB) and doesn't return free chunks back to system
immediately, assuming that script may request the same amount again.
------------------------------------------------------------------------
[2017-02-27 12:31:29] enleury at gmail dot com
Description:
------------
Memory is not freed after return from the method. Looks like a heap defragmentation issue
(https://bugs.php.net/bug.php?id=53669), but it works fine on 5.x branches.
Online test script for 5.x and 7.x branches: https://3v4l.org/2OVeU#output
Test script:
---------------
<?php
function create_docs($amount)
{
$documents = [];
for ($i = 0; $i < $amount; $i++) {
$documents[] = ['a' => $i];
}
}
echo memory_get_usage(true), PHP_EOL;
create_docs(5000);
echo memory_get_usage(true), PHP_EOL;
create_docs(50000);
echo memory_get_usage(true), PHP_EOL;
create_docs(5000);
echo memory_get_usage(true), PHP_EOL;
Expected result:
----------------
262144
524288
524288
524288
Actual result:
--------------
2097152
4194304
20971520
20971520
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=74174&edit=1
Thread (7 messages)