3. Java-Bean – impliziter Aufruf von Java durch Starten der

Werbung
Memo Java HeapSpace
An:
ASYS - Administratoren
Von:
Stephan Meyer
Thema:
Java Heapspace - Problematik
Datum:
18.02.2009
Inhalt
1. Vorbemerkung .......................................................................................... 1
2. Direkte Java-Aufrufe (Batch-Aufrufe) ........................................................... 1
2.1
Einstellungen für den Kommunikationsserver ...................................... 2
3. Java-Bean – impliziter Aufruf von Java durch Starten der Oberflächen
(Administrator und GUI).................................................................................. 2
3.1
Java 1.6 – Problematik .................................................................... 5
1. Vorbemerkung
Seit einigen ASYS-Versionen tritt häufiger das Problem auf, dass beim Betrieb von
ASYS der für Java reservierte Speicher nicht ausreicht. Dies äußert sich dann in
einem „Java Heap Space - Error“. Wenn dieser Fehler auftritt muss ASYS beendet
werden.
Java nutzt nicht automatisch den gesamten auf einem System zur Verfügung
stehenden Speicher, sondern beim Start einer Java-Anwendung können/müssen
dieser Java-Anwendung Speicherparameter übergeben werden. Zum einen ist dies
ein Wert für den sofort beim Start der Anwendung für die Anwendung reservierten
Speicher, zum anderen ein Maximalwert, der von dieser Anwendung in Anspruch
genommen werden kann. Es handelt sich hierbei nicht unbedingt um
„physikalischen“ Speicher, sondern ggf. auch um „virtuellen“.
In ASYS werden die Java-Anwendungen auf zwei verschiedene Arten gestartet.
2. Direkte Java-Aufrufe (Batch-Aufrufe)
Zum einen als direkter Java-Aufruf mit Übergabe einer Klasse. Dies geschieht bei
allen für ASYS implementierten „Batch-Aufrufen“, also z.B. bei der Kommunikation
(„acsPreVersand.bat“, „acsEmpfang.bat“,…) aber auch beim Aufruf z.B. der
„SqlTool.bat“ oder der „mergeRep.bat“. Diesen direkten Java-Aufrufen können die
oben erwähnten Speicherparameter übergeben werden.
Beispiel: Die „acsEmpfang.bat“ ruft die Datei „acs\ACSBridge.bat“ auf. In dieser
erfolgt erst der Start der eigentlichen Java-Anwendung:

%JAVA_HOME%\bin\java -Xms64M -Xmx512M -classpath %CLASSPATH%
de.condat.acs.bridge.ACSBridge %1 %2 %3
 ITU GmbH 2009
81949963
1/5
Memo Java HeapSpace
Die bei diesen Aufrufen übergebenen Speicherparameter sind:

-Xms64M: Dieser Wert, d.h. 64 MB werden sofort beim Start der Anwendung
für diese Anwendung reserviert.

-Xmx512M: Dies ist der Maximalwert (512 MB) an Speicher, den Java für
diese Anwendung verwenden wird.
Alle von der ITU ausgelieferten „direkten“ Java-Aufrufe über Batch-Jobs sind mit
genau den im Beispiel genannten Speicherparametern versehen. Es kann jedoch
nicht 100%tig ausgeschlossen werden, dass bei Ihnen aufgrund von selbst
geschriebenen Skripten oder unvollständigen Updates noch Aufrufe vorhanden sind,
die nicht mit diesen Parameters versehen sind (es gibt eine Fehlermeldung, die in
diese Richtung deutet).
Ohne Übergabeparameter verwendet Java als Default-Wert für den maximal
verwendeten Speicher nur 64 MB.
2.1
Einstellungen für den Kommunikationsserver
Die Speichereinstellungen für den Kommunikationsserver werden in der
„…\AsysComServer\tomcat\bin\startup.bat“ gesetzt.

set CATALINA_OPTS=-Xms512m -Xmx512m
Hierbei werden sofort beim Starten des Kommunikationsservers 512 MB für den
Kommunikationsserver reserviert und dies ist auch gleichzeitig der Maximalwert.
Nach unseren bisherigen Erfahrungen sollte dies für den Kommunikationsserver
ausreichend sein.
3. Java-Bean – impliziter Aufruf von Java durch Starten der Oberflächen
(Administrator und GUI)
Beim Aufruf der Oberflächen wird Java nicht direkt, sondern als „applet - plugin“
gestartet. Daher können die Speicherparameter hierbei nicht dem Java-Aufruf
direkt übergeben werden, sondern müssen anderweitig gesetzt werden.
Zum Setzen dieser Parameter dient (normalerweise – s.u. „Java 1.6 - Problematik“)
das „Java Control Panel“, welches über die „Systemsteuerung“ -> „Java“ geöffnet
werden kann.
Tabreiter „Java“
Bereich: „Java-Applet-Laufzeiteinstellungen“
Die dort vorgenommen Einstellungen sind „userspezifisch“ vorzunehmen. Dies ist
insbesondere für Citrix-Systeme relevant – wir bei der ITU wissen allerdings leider
nicht, wie dies zu geschehen hat - es geht aber.
Hinweis so nebenbei: Über den Tabreiter „Erweitert“ können Sie z.B. auch noch
einstellen, ob die Java-Konsole (Kaffeetassensymbol) ein- oder ausgeblendet oder
gar nicht gestartet werden soll.
 ITU GmbH 2009
81949963
2/5
Memo Java HeapSpace
Für die von ASYS verwendete Java-VM (die Java-Version mit dem axbridgeUnterverzeichnis; die Java-Version, für die unser Java-Bean registriert wurde) sind
die Speicherparameter einzutragen.
Wir empfehlen, die vorstehend abgebildeten Parameter einzutragen, also:

-Xms256m -Xmx256m
Bis auf das jeweils letzte Zeichen („m“ für Megabyte) ist auf eine korrekte Großund Kleinschreibung zu achten.
 ITU GmbH 2009
81949963
3/5
Memo Java HeapSpace
Die letzte Empfehlung, die wir gelesen haben, lautet dahingehend, für beide
Parameter den gleichen Wert einzutragen.
Kontrolle über die Java-Konsole:
Sofern Sie die Java-Konsole eingeblendet haben oder einblenden können, ist es
dort möglich, sich diverse Informationen über die Parameter, mit denen das Java
Plug-in gestartet wurde, ausgeben zu lassen.
Sie finden im oberen Bereich eine Auflistung der Buchstaben (und Zahlen), die mit
Befehlen verbunden sind. Durch einfaches Drücken einer dieser Tasten wird der
zugehörige Befehl sofort ausgeführt.
Über die Taste „m“ können Sie sich die derzeitige Speicherauslastung anzeigen
lassen.
 ITU GmbH 2009
81949963
4/5
Memo Java HeapSpace
Wenn die Einstellung, wie oben beschrieben, vorgenommen wurde, sollten Ihnen
als „Speicher: 260.160K“ angezeigt werden. Hinter „Frei:“ können Sie sehen, wie
viel Speicher die Mittelschicht noch zur Verfügung hat.
3.1
Java 1.6 – Problematik
ASYS kann derzeit nicht mit der Java-Version 1.6 betrieben werden (dies liegt an
einer unvollständigen Security-, Kryptographiekomponente innerhalb der JavaVersion 1.6).
Nichtsdestotrotz kann es sein, dass Sie bereits eine Java-VM 1.6 auf Ihrem Rechner
haben. Leider können Sie in diesem Fall die Speicherparameter nicht mehr über das
„Java-Control-Panel“ eingeben bzw. die ggf. vorgenommenen Einstellungen werden
einfach ignoriert. Dies ist ein Fehler innerhalb von Java, auf den wir keinen Einfluss
haben. Sofern Sie die Java 1.6 – Version nicht wieder entfernen möchten oder
können – auch dies ist theoretisch möglich – müssen die Speicherparameter in
diesem Fall über eine Umgebungsvariable gesetzt werden.
„Systemsteuerung“ -> „System“ -> „Umgebungsvariablen“
Name der Variablen:
_JPI_VM_OPTIONS
Wert der Variablen:
-Xms256m -Xmx256m
Diese Umgebungsvariable kann sowohl im „Benutzer-„ oder auch im
„Systembereich“ gesetzt werden.
 ITU GmbH 2009
81949963
5/5
Herunterladen