Frage

Ich setze in die Produktion einige RPGLE Code, der %alloc und dealloc verwendet Speicher zuzuweisen. Programmierer sollten in der Lage sein, um sicherzustellen, dass keine Speicher undicht, aber ich mache mir Sorgen darüber, was passiert, wenn sie es nicht tun.

Meine Frage ist: wenn Programmierer up Chaos und es ist Speicherlecks dann wann wird dieser Speicher zurückgewonnen werden? Ist es, wenn das Programm verlässt Speicher oder wenn der Job beendet ist?

War es hilfreich?

Lösung

Von dem ILE RPG Programmierer Referenzhandbuch:

  

Speicher wird implizit freigegeben, wenn die   Aktivierungsgruppe endet. Einstellung LR auf   wird keinen Heap-Speicher frei   von dem Modul zugeordnet, aber jeder   Zeiger auf Heap-Speicher verloren.

Wenn Ihr RPG-Programm in einer eigenen Aktivierungsgruppe ist, dann wird der Speicher freigegeben werden, wenn das Programm endet. Natürlich, wenn Sie Ihre Arbeit beendet ist, so auch Ihre Aktivierungsgruppe. Also die Arbeit endet immer aufzuräumen zugewiesen beliebigen Speicher.

Andere Tipps

Es klingt wie Sie RPG aus einem C / C ++ Hintergrund nähern. Ich bin jetzt seit über 8 Jahren in RPG wurde Programmierung und nur ein paar Mal hatte jemals das% alloc () BIF zu verwenden.

Dass gesagt wird, wenn Sie eine neue Aktivierungsgruppe verwenden, sollten Sie sich gut. Wenn Sie eine benannte Aktivierungsgruppe verwenden und stellen keine den RCLACTGRP Befehl oder Sie die Standardaktivierungsgruppe verwenden Sie auf Probleme stoßen könnte.

Tatsächlich haben Sie den Mechanismus der Aktivierung Gruppen zu untersuchen. Speicherlecks kann passieren, aber Schäden an der Maschine nicht tun (ich liebe die AS400). Aber man kann die anderen Programme in Ihrem iSeries Job schadet (Anmerkung: wenn Sie nicht von einem AS400 Hintergrund sind, haben Sie über den AS400 Job Mechanismus lesen).

Wenn Sie mit der Verwaltung der activationgroups in Ihrem Job beginnen, sich (in dem Programm, das natürlich ist), können Sie separate schaffen, eine Art Speicherbereich. Es erfordert einigen Aufwand (Sie haben die Gruppen zu nennen), aber dann haben Sie eine sichere Umgebung, wo man Sachen ueberzeug kann.

Ich bin nicht vertraut mit dem eingebauten-in-Funktionen, aber normal alles aufgeräumt wird, wenn die Auftragsende (oder Benutzer abmeldet, wenn interaktiv). Wenn Sie keine Antwort finden kann, kann ich Sie in eine andere Gemeinde verweisen waren Ihre Antwort bekannt sein können.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top