PHP内存泄漏和 fork

标签 php memory-leaks

我试图避免 PHP 中的内存泄漏。当我创建一个对象并在最后取消设置时,它仍在内存中。未设置的看起来像:

$obj = NULL;
unset($obj);

这仍然无济于事。

我的问题是当我 fork 进程并且对象将在子线程中创建和销毁时会发生什么?这会一样吗? 或者有什么其他方法可以释放内存吗?

这是导入脚本,它将消耗几千兆内存。

最佳答案

PHP 5.3 有一个垃圾收集器,可以收集循环引用。可能值得一试:

gc_enable();

class A {
  public function __construct() {
    $this->data = str_repeat("A", 1024000);
  }
}

$mem = memory_get_usage();
$a = new A();
$mem2 = memory_get_usage();
$a->a = $a;
$a->a->mydata =  $a->data . 'test';
$mem3 = memory_get_usage();
unset($a);
gc_collect_cycles();
$mem4 = memory_get_usage();      

printf("MEM 1 at start %0.2f Mb\n", ($mem / 1024) / 1024);
printf("MEM 2 after first instantiation %0.2f Mb\n", ($mem2 / 1024) / 1024);
printf("MEM 3 after self-ref: %0.2f Mb\n", ($mem3 / 1024) / 1024);
printf("MEM 4 after unset(\$a): %0.2f Mb\n", ($mem4 / 1024) / 1024);      

输出:

MEM 1 at start: 0.31 Mb
MEM 2 after first instantiation: 1.29 Mb
MEM 3 after self-ref: 2.26 Mb
MEM 4 after unset($a): 0.31 Mb   

关于PHP内存泄漏和 fork ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1372211/

相关文章:

PHP 链接不起作用

php - mysql链接语句不返回没有链接的记录

php分组表排序1关闭

python - 调试 Python/NumPy 内存泄漏

c++ - _CRTDBG_MAP_ALLOC 不显示文件名

c++ - 类指针成员和异常处理

node.js - 在本地服务器上复制heroku/node.js内存泄漏以进行调试

php - 在 PHP 和 Eclipse 中设置路径映射

php - 具有可变小数位的数字格式

android - LeakCanary 与 Cordova 的依赖关系 - 找不到方法 debugCompile()