どのくらいのメモリリークがRPGLEプログラムに固執することができますか?
-
19-09-2019 - |
質問
私は生産にメモリを割り当てるために%alloc
とdealloc
を使用して、いくつかのRPGLEコードを入れています。プログラマには結果としてメモリリークがないことを確認することができるはずですが、私はそうではない場合はどうなるか心配です。
私の質問は:プログラマ台無し場合とがあり、このメモリが再生されますときに、のメモリリークしていますか?それはプログラムがメモリを残したり、ジョブが終了すると、ときですか?
解決
ILE RPGプログラマーズリファレンスガイドから:
ストレージを暗黙的に解放されたとき 起動グループが終了します。 LRの設定 すべてのヒープメモリを解放しません モジュールによって割り当てられたが、どの ヒープ領域へのポインタが失われます。
あなたのRPGプログラムは、独自の活動化グループである場合は、プログラムの終了時に、メモリが解放されます。あなたの仕事が終了したときにもちろん、ので、あなたの起動グループを行います。だから、仕事を終了することは、常に割り当てられたメモリをクリーンアップします。
他のヒント
これが鳴ります。私は今、約8年間、RPGでプログラミングしてきた時代のほんの一握りは、これまで%のアロケーションを使用する必要がありました()BIFます。
あなたは新しい起動グループを使用している場合、あなたは問題ないはずです言われていること。あなたが名前付き活動化グループを使用していて、RCLACTGRPコマンドを発行していないか、デフォルトの起動グループを使用している場合は、問題に遭遇する可能性があります。
実際には、アクティベーショングループの仕組みを勉強しなければなりません。メモリリークが発生する可能性がありますが、マシン(私はAS400を愛する)への損傷を行うことはありません。しかし、あなたはあなたのiSeriesジョブ(発言:あなたはAS400の背景からでない場合、あなたはAS400ジョブメカニズムをについて読まなければならない)内の他のプログラムに害を与えることができます。
あなたの仕事の中に自分をactivationgroupsの管理を起動した場合(ofcourseのあるプログラムでは)、あなたは別の作成することができ、ソートメモリの領域のの。これは、いくつかのオーバーヘッドが必要(あなたがグループに名前を付ける必要があります)が、その後、あなたがものを強力なことができ、安全な環境を持っています。
私は、ビルトイン機能これらに精通していないですが、ジョブが終了する(インタラクティブた場合や、ユーザーがログオフする)とき、は、通常のすべてがクリーンアップされます。あなたは答えを見つけることができない場合、私はあなたの答えを知ることが可能だった別のコミュニティにあなたを指すことができます。