[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jun 2001
    Beiträge
    1.978

    Speicherverbrauch der JVM

    Hi,
    unser Java Team hat mit erklärt das sie Java auf der As400 starten und dabei einen minimalen und einen maximalen Hauptspeicherverbrauch weggeben.

    Was sie mir nicht beantworten konnten, war das Verhalten der JVM im Leerlauf.
    Angenommen das Java Pgm hat bei der Verarbeitung sich soviel Speicher genommen, das der Max Bereich erreicht wurde.
    Nun wartet es auf die nächste Aufgabe. Diese kommt ggf sofort mit ähnlich großen Anforderungen oder auch mit nur einem 10. zu verarbeitender Informationen. Schlimstenfalls hat Sie quasi Feierabend.
    Was ist mit dem Speicher ? Wird er für AS400 Programme wieder frei oder ist einmal zugeordnet bis zum Jobende weg für die 'grüne' Welt.

    Danke
    Robi
    Das Notwendige steht über dem technisch machbaren.
    (klingt komisch, funktioniert aber!)

  2. #2
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    ... da gibt es zwei Einflussgrößen:
    - Java seitig wird Speicher von Objekten automatisch freigegeben, auf die keine Referenzen mehr gehalten werden. (embedded Java in RPG schneidet da z.B. wg. lausiger Implementierung ganz schlecht ab!!!)
    - vom Workmanagement her wird Java aus dem Hauptspeicher nach denselben Regeln verdrängt, wie andere Objekte auch (single level store).

    Am Besten ist da immer mit Serverprozessen zu arbeiten (Tomcat, JBoss, WebSphere, AppServer4RPG...) und diese mit entsprechender Poolzuordnung Speicher resident zu halten.

    D*B

    Zitat Zitat von Robi Beitrag anzeigen
    Hi,
    unser Java Team hat mit erklärt das sie Java auf der As400 starten und dabei einen minimalen und einen maximalen Hauptspeicherverbrauch weggeben.

    Was sie mir nicht beantworten konnten, war das Verhalten der JVM im Leerlauf.
    Angenommen das Java Pgm hat bei der Verarbeitung sich soviel Speicher genommen, das der Max Bereich erreicht wurde.
    Nun wartet es auf die nächste Aufgabe. Diese kommt ggf sofort mit ähnlich großen Anforderungen oder auch mit nur einem 10. zu verarbeitender Informationen. Schlimstenfalls hat Sie quasi Feierabend.
    Was ist mit dem Speicher ? Wird er für AS400 Programme wieder frei oder ist einmal zugeordnet bis zum Jobende weg für die 'grüne' Welt.

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

  3. #3
    Registriert seit
    Jun 2001
    Beiträge
    1.978
    Bedeutet das, wir können beim Start als Max Wert annähernd den gesammten HSP weggeben ohne 'permannent' die anderen zu stören ? ( Das für den kurzen Moment der 'Notwendigkeit'
    5250 Grün Schwarz sich extrem verlangsamt währe kein Prob.)

    Robi
    Das Notwendige steht über dem technisch machbaren.
    (klingt komisch, funktioniert aber!)

  4. #4
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    ...letzteres würde single level store eh' verhindern. Die Frage hört sich allerdings danach an, dass die Lösung eine andere wäre...

    D*B

    Zitat Zitat von Robi Beitrag anzeigen
    Bedeutet das, wir können beim Start als Max Wert annähernd den gesammten HSP weggeben ohne 'permannent' die anderen zu stören ? ( Das für den kurzen Moment der 'Notwendigkeit'
    5250 Grün Schwarz sich extrem verlangsamt währe kein Prob.)

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

  5. #5
    Registriert seit
    Jul 2001
    Beiträge
    2.646
    Zitat Zitat von Robi Beitrag anzeigen
    Bedeutet das, wir können beim Start als Max Wert annähernd den gesammten HSP weggeben ohne 'permannent' die anderen zu stören ? ( Das für den kurzen Moment der 'Notwendigkeit'
    5250 Grün Schwarz sich extrem verlangsamt währe kein Prob.)

    Robi
    Wie Dieter schon schrieb, ist das eine zweischneidige Angelegnheit. Du kannst für die JVM auch das Zehnfache des phyisch vorhandenen RAMs angeben. Die Maschine wird dann eventuell kurzfristig die Platten putzen. Wird der Speicher nicht gebraucht, kümmert sich die Speicherverwaltung schon darum, wem man wieviel RAM zuteilt.

    Sollte allerdings Eure Applikation von viel RAM profitieren, ist das auch eine Design-Frage. Wenn die Maschine genügend RAM hat, um vom Dauerhaften Gebraucht die Hälfte fix abzugeben, könnte man das in einem eigenen Pool erledigen.

    Aber auch hier gilt: ohne genaue Betrachtung von Anwendung und Maschine hilft nur Experimentieren. Die AS/400 hilft dabei, in dem sie demokratisch jedem genug RAM zuweist, der gerade welchen braucht. Ausserdem wird wie in einer parlamentarischen Demokratie mit Prioritäten gearbeitet (manche sind gleicher als andere), und wer unter die 5%-Hürde fällt (nur selten aufgerufen und wenig RAM benötigt) muss gelegentlich warten ;-)

    -h

  6. #6
    Registriert seit
    Jun 2001
    Beiträge
    1.978
    ... wie auch von Dieter beschrieben ...
    Sollte allerdings Eure Applikation von viel RAM profitieren, ist das auch eine Design-Frage.
    Ist ein Excelexport mit POI das, so sagte man mir, das Excel im Speicher aufbaut.
    Bei 2,7 Mio Datensätzen ist das halt viel. Der im Standart vergebene Speicher ist 'übergelaufen' (sagte die JVM).

    Der Designfehler ist höchstens der Wunsch, das ins Excel zu bekommen, csv würde M.E. zur Weiterverarbeitung reichen oder besser sein.

    Aber das erklär mal dem Windows Edv-ler, der deine Brötchen bezahlt.
    schön, das die AS400 sich zurückholt, was nicht gebraucht wird.

    Gruß
    Robi
    Das Notwendige steht über dem technisch machbaren.
    (klingt komisch, funktioniert aber!)

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.247
    Ich denke, die Diskussion ist bei der AS/400 eh für die Katz:

    Die JVM läuft in einem eigenen Job, der mit anderen Jobs ja nun mal nichts zu tun hat.
    Eine Speicherzuordnung ist absolut überflüssig, da durch das Einspeicherkonzept der AS/400 der Speicher im RAM oder auch auf der Platte liegen kann und durch das Paging zwischen beiden hin und hergeschoben wird.
    Wenn sich eine JVM eben 4GB (bei 32-Bit) Speicher genehmigen will, bekommt sie ihn auch.
    Erst wenn tatsächlich auf den Speicher zugegriffen wird wird dieser eingelagert und eben anderer Speicher ggf. verdrängt.
    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

  8. #8
    Registriert seit
    Feb 2001
    Beiträge
    20.247
    Excel unterstützt ja erst ab Office2007 1Mio Zeilen, vorher sind's max. 65535 Zeilen.
    Man muss dann wohl je 65535 Zeilen ein neues Blatt erstellen, wobei nur max. 255 Blätter unterstützt werden.

    Ansonsten wirst du die Excel-Dateien mit Excel selber nie bearbeiten können.

    Könnte wohl eher das Problem sein, dass ein Java-Programm in 32-Bit nur 4GB Speicher haben kann, was bei dieser Anzahl Sätzen ja durchaus nicht ausreichen kann.
    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

  9. #9
    KM is offline [professional_User]
    Registriert seit
    Apr 2003
    Beiträge
    1.005
    Ist ein Excelexport mit POI das, so sagte man mir, das Excel im Speicher aufbaut.
    Bei 2,7 Mio Datensätzen ist das halt viel. Der im Standart vergebene Speicher ist 'übergelaufen' (sagte die JVM).
    Genau aus diesem Grund habe ich unsere Anwendung von POI auf JExcelAPI umgestellt. Das hat einen deutlich geringeren Speicherverbrauch und die Laufzeit ist wesentlich kürzer.

    Gruß,
    KM

  10. #10
    Registriert seit
    Feb 2001
    Beiträge
    20.247
    2.7 Mio Sätze könnten auch das IFS-Limit von 4GB übersteigen (neben dem Problem, dass Excel das nie verarbeiten kann).
    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

  11. #11
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    ... wie von D*B beschrieben, kannst du die maximale Speichergröße der JVM bei allen Rechnern aufdrehen bis die Größe des Auslagerungsbereich (bei AS/400 freier Plattenplatz) erreicht ist, oder die maximale Größe des adressierbaren Bereichs der JVM. Ob das bei POI nicht auch eleganter geht, würde ich mal in ein Java Forum posten...

    D*B

    Zitat Zitat von Robi Beitrag anzeigen
    ... wie auch von Dieter beschrieben ...


    Ist ein Excelexport mit POI das, so sagte man mir, das Excel im Speicher aufbaut.
    Bei 2,7 Mio Datensätzen ist das halt viel. Der im Standart vergebene Speicher ist 'übergelaufen' (sagte die JVM).

    Der Designfehler ist höchstens der Wunsch, das ins Excel zu bekommen, csv würde M.E. zur Weiterverarbeitung reichen oder besser sein.

    Aber das erklär mal dem Windows Edv-ler, der deine Brötchen bezahlt.
    schön, das die AS400 sich zurückholt, was nicht gebraucht wird.

    Gruß
    Robi
    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. JVM beenden
    By Robi in forum NEWSboard Java
    Antworten: 29
    Letzter Beitrag: 25-03-10, 14:48
  2. JVM QDLS
    By itec01 in forum IBM i Hauptforum
    Antworten: 0
    Letzter Beitrag: 16-07-09, 09:25
  3. JVM kann nicht erstellt werden
    By KM in forum NEWSboard Java
    Antworten: 1
    Letzter Beitrag: 21-07-06, 11:13
  4. Aufruf von Java Methode aus RPG
    By codierknecht in forum NEWSboard Java
    Antworten: 7
    Letzter Beitrag: 23-03-05, 08:31
  5. ILE-RPG mit Java erster Aufruf dauert sehr lange
    By WPF in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 09-07-04, 09:30

Berechtigungen

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