PHP 関数の実行時にメモリが解放されないのはなぜですか?
最近、必要な構造データを取得するためのファイルの処理が必要なため、大きなファイルをインポートしました。
大量のデータを配列に保存します。
処理中に大量のメモリが消費されますが、memory_limit の設定を十分に大きくしておけば問題ありません。
処理の途中で、不要なものの設定も解除しました。ただし、memory_get_usage() は関数呼び出しの前後でメモリ比較を出力します。
関数の呼び出し後、メモリが大幅に減少していないことがわかりました。これらの大きな配列は設定解除されています。同じことです。
インポートされるファイルの量が多くない場合、メモリ オーバーフローのエラー メッセージは表示されません。ただし、ファイルが十分に大きい場合。実行プロセス中に、
関数が呼び出された後も、メモリは大量のスペースを占有します。そしてメモリオーバーフローを引き起こします。
これでは少し憂鬱になります。関数呼び出し後にローカル変数空間が解放されていませんか?
メモリリークですか?同じ問題に遭遇した人はいますか?誰かが同じ問題に遭遇したか、それについて知っていることを願っています。一緒に話し合いましょう。ありがとう。
ps: スコアがかなり小さいので、これしか方法がありません。