Laravel - 在简单的数据库查询内存泄漏/“允许的内存大小为 .. 字节耗尽”之后 [重复]

Posted

技术标签:

【中文标题】Laravel - 在简单的数据库查询内存泄漏/“允许的内存大小为 .. 字节耗尽”之后 [重复]【英文标题】:Laravel - after simple DB query memory leak / "Allowed memory size of .. bytes exhausted" [duplicate] 【发布时间】:2018-09-14 03:15:58 【问题描述】:

Laravel v5.6。 使用基本的 Homestead 设置。 Laravel 播种器抛出“Allowed memory size of .. bytes exhausted”。不是查询日志问题。尝试删除非默认提供程序。尝试切换到生产并禁用调试。即使在简化播种器之后内存泄漏(用户表不为空):

<?php

use Illuminate\Database\Seeder;
use App\User;


class UsersTableSeeder extends Seeder

    public function run()
    

        // $users = factory(App\User::class, 1)->create();

        for ($i = 1; $i <= 10; $i++) 
            $user = User::first();
            $user = null;
            print("Memory usage: ". memory_get_usage() ."\r\n");
        

        print("________________________________________\r\n");
        print("TEST FINISHED\r\n");
        print("Memory usage: ". memory_get_usage() ."\r\n");
        print("Query log: ");
        print_r(DB::getQueryLog());
    

输出:

Memory usage: 11503280
Memory usage: 11514592
Memory usage: 11525872
Memory usage: 11537152
Memory usage: 11548432
Memory usage: 11559712
Memory usage: 11570992
Memory usage: 11582272
Memory usage: 11593552
Memory usage: 11604832
________________________________________
TEST FINISHED
Memory usage: 11604832
Query log: Array
(
)

如何继续调试此问题?谢谢。

编辑 不是重复的 - 提高 memory_limit 不是解决方案。

【问题讨论】:

如何运行该代码?您确定将内存限制提高到 11 MB 以上不是解决方案吗?当前默认值为 128 MB 使用 php artisan db:seed --class=UsersTableSeeder 运行。不,如果存在内存泄漏,提高限制永远不是解决方案。原来是宅基地的问题。 【参考方案1】:

这是一个 Homestead 问题:https://github.com/laravel/homestead/issues/825

更新 Homestead 或使用php7.1 artisan ...

【讨论】:

以上是关于Laravel - 在简单的数据库查询内存泄漏/“允许的内存大小为 .. 字节耗尽”之后 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

在循环中执行 Doctrine 查询时的内存泄漏

eclipse java MemoryAnalyzer 查询内存泄漏 环境配置

java内存泄漏问题

UDF 内存泄漏的解决方法

php 执行mysql中查询时内存溢出怎么办

Java提高篇—— 简单介绍Java 的内存泄漏