Perlインタプリタ(別名「perl」)がメモリ不足のときに動作するための標準的な方法はありますか?それは何らかの形で文書化/特定されていますか?統一された方法でコーディングされていますか?
私は、実行されているPerlコードの契約として表現されている標準に特に興味があります-たとえば、die
呼び出されますか?END
ブロックは実行されますか?等...
私は両方の「理論的」な答えで大丈夫です(たとえば、Larry / P5P/etcからのある種の一般的な「これはperlコードがメモリ不足で一般的に行うべきことです」ミッションステートメントドキュメント... malloc()呼び出しの100%がこのルールに従うわけではありません); または「実用的な」ステートメント(たとえば、Perlでのすべてのmalloc()呼び出しは、すべての失敗を均一に処理する汎用の「allocate_memory」関数にラップされます)。
答えは、具体的にメモリ不足の原因に依存する可能性があります(たとえば、Perlコードのデータ構造に対するより多くのメモリの要求と、Perlプログラムの明示的な「より多くのデータを格納する必要がある」ロジックに関係のない内部Perlコードによって割り当てられたメモリ) 。
答えが実装に大きく依存する場合は、Solaris / Linuxのperlを想定し、最近の安定バージョン(5.8から5.16)に絞り込むことができます。
質問は標準のPerlインタープリターに限定されていますが、コンパイル前の構成(たとえば、主要なLinuxディストリビューションに付属するperl、またはすべてのデフォルトをそのままにしてコンパイルされたperlなど)まで定義したいと思います。
注:この質問は、別のQに対するGillesのコメントから出てきました。