[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jan 2012
    Beiträge
    1.120

    Wie wird man eine JVM wieder los?

    Hallo,

    uns ist aufgefallen, dass interaktive iSeries-Sitzungen scheinbar sehr viel Speicher benötigen, wenn sie ein Java-Programm aufgerufen haben. Vielleicht interpretieren wir die Werte auch einfach falsch:

    Im WRKACTJOB sieht ein Job folgendermaßen aus, wenn er noch keine Java-Funktionalität benutzt hat:
    QPADEV012K SCHRO970 INTER AKTIV PGM-SYS000CL DSPW


    Nachdem er einmal ein Java-Programm aufgerufen hat, sieht das so aus:
    QPADEV012K SCHRO970 INTER AKTIV PGM-jvmStartPa DSPW

    Wenn man sich jetzt noch mit WRKJOB, Auswahl 3 ("Jobausführungsattribute anzeigen, falls aktiv") den Wert "Benutzter temporärer Speicher" anschaut, sieht man, dass der Speicherverbrauch nach dem Benutzen von Java wesentlich höher ist.

    Das wundert uns natürlich nicht grundsätzlich. Aber wir überlegen, ob es irgendwie möglich ist, die in einem Job einmal gestartet virtuelle Maschine wieder zu beenden. Weiß das jemand? Auf Dauer werden wir das alles sicherlich mal so bauen, dass die Java-Nutzung als Job submitted wird. Dann müsste der Speicher wieder sauber sein.

    Gruß,
    Dieter

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.236
    Abmelden ist die einzige Chance.
    Da der Java-Start u.U. etwas dauert, bleibt die JVM bis Jobende aktiv.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  3. #3
    Registriert seit
    Jan 2012
    Beiträge
    1.120
    Danke, ich hab's befürchtet. Kann man vielleicht nachträglich die Attribute der JVM ändern? Z.B. die maximale Speichernutzung auf ein Minimum setzen und vor dem Aufruf des nächsten Java-Programms das Attribut wieder ändern?

    Dieter

  4. #4
    Registriert seit
    Jun 2001
    Beiträge
    1.975
    Wenn's irgendwie geht,
    lass dem javajob im Batch laufen.
    EINEN für alle, Kommunikation über Dataq.
    Robi
    Das Notwendige steht über dem technisch machbaren.
    (klingt komisch, funktioniert aber!)

  5. #5
    Registriert seit
    Jan 2012
    Beiträge
    1.120
    Die User warten manchmal interaktiv auf das Ende der Java-Aktion. Wir müssten deshalb relativ viel Programmeingriffe machen. Auf Dauer werden wir das sicher tun. Aber im Moment suchen wir nach einer schnellen Lösung ohne viel Programmierung.
    Danke für alle Antworten.

  6. #6
    Registriert seit
    Jun 2001
    Beiträge
    1.975
    Wir haben auch interaktion mit Javapgm (Konto/BLZ Iban/BIC prüfung via Easykonto, auf AS400)
    das geht über dataq, performance ist ohne Beanstandung.
    Java liest Dataq Satz mit Key=1, im Datenteil steht der Antwortkey, mit dem die AS400 auf die Antwort wartet.
    Robi
    Das Notwendige steht über dem technisch machbaren.
    (klingt komisch, funktioniert aber!)

  7. #7
    Registriert seit
    Jan 2012
    Beiträge
    1.120
    Danke Robi.
    Bei uns rufen die User ein selbstgeschriebenes Java Tool auf, das Excel-Tabellen erstellt. Das kann schon mal ein paar Minuten laufen. Ich denke, wenn wir die Java-Calls in die QINTER submitten, hätten wir weiterhin Parallelverarbeitung und der Speicher wäre nach der Beendigung des Programms wieder aufgeräumt. Nur leider müssen wir da in einige zentrale Programme eingreifen.

    Dieter

  8. #8
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    ... das Problem ist nicht das terminieren der JVM (da gibt es API DestroyJavaVM), das Problem ist, dass man innerhalb eines Jobs nur einmal eine JVM starten kann!!! Dieser Speicherfrass freut allenfalls IBM und ist der entscheidende Grund dafür, dass dieses schräge Design - Java aus native Jobs synchron aufzurufen - propagiert wird.
    Asynchron entkoppeln und an eine vorgestartete JVM delegieren ist das einzig vernünftige, und wenn man es richtig implementiert, dann werden die ANforderungen von einer JVM parallel abgearbeitet. Wer sich da Arbeit sparen will, der kann mein Open Source Framework AppServer4RPG verwenden (ist die Grundlage von ArdGate); oft ist der Kram in wenigen Tagen komplett umgestellt , läuft dann schneller und stabiler, mit weniger Ressourcenverbrauch.

    D*B
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

Similar Threads

  1. Suche eine Datumsfunktion und finde wieder einmal gar nichts
    By nico1964 in forum NEWSboard Programmierung
    Antworten: 12
    Letzter Beitrag: 16-02-15, 10:58
  2. mal wieder: Management Central
    By tom in forum IBM i Hauptforum
    Antworten: 0
    Letzter Beitrag: 08-01-03, 07:10
  3. Spools vom PC wieder auf AS
    By Pia in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 06-11-02, 09:03
  4. Wieder IBM 3487-CA0 zu verkaufen!!
    By BSC Computervertrieb in forum NEWSboard Server & Hardware Markt
    Antworten: 0
    Letzter Beitrag: 13-06-02, 13:05
  5. Warum wird eine Kopie einer log. Datei erstellt
    By hs in forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 27-09-01, 11:25

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •