ホームページ  >  記事  >  バックエンド開発  >  兄さん、PHP 関数の実行時にメモリが解放されないのはなぜですか?

兄さん、PHP 関数の実行時にメモリが解放されないのはなぜですか?

WBOY
WBOYオリジナル
2016-06-13 12:41:231052ブラウズ

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。