Bug #74174 [NoF->Nab]: Memory allocation problem

From: Date: Sun, 12 Mar 2017 04:52:52 +0000
Subject: Bug #74174 [NoF->Nab]: Memory allocation problem
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-207803@lists.php.net to get a copy of this message
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)

« previous php.bugs (#207803) next »