Der Auftrag heute: Eine JVM mit 2G Heap (bitte keine Fragen, warum man soviel Heap braucht) unter AIX stabil zum Laufen bekommen. Bisher crasht das alle paar Tage, weil der native heap voll ist und das ganze dann sang- und klanglos umfällt.
(Der native heap ist der Teil des Heaps, der von dem nicht-Java Code innerhalb einer JVM gebraucht wird. Wenn man von einer Sun-JVM kommt, interessiert das einen überhaupt nicht. Da stellt man einfach eine Heapgrösse von 2 Gigabyte ein und fertig. Alles läuft stabil.)
Beginnend mit einer
Dokumentation auf IBM Developerworks, die einem mit Begriffen bewirft, die man eigentlich gar nicht wissen will; dann der
IBM Java diagnostics guide, der einem für AIX erstmal die Grundlagen der Speicherverwaltung erklärt (warum interessiert mich, daß alles segmentbasiert ist und man mittels geeigneter Umgebungsvariablen eine gewisse Menge dem Java-Heap zur Verfügung stellen kann? Ich will doch nur eine stabile JVM mit 2GB Heap!); am Ende findet sich dann noch
diese Seite, die noch einen anderen Weg erklärt, wie man das unter einem aktuellen AIX hinkriegt (vorher aber kriegt man wieder die Schemata der Speicherverwaltung erklärt). Ob das ganze Zeugs funktioniert, habe ich noch nicht testen können.
Und am Ende stellt sich wahrscheinlich heraus, daß die JVM der
AIX Heap-Fragmentation zum Opfer gefallen ist.
Himmel, ich will kein nicht die Interna verstehen, ich will nur eine JVM zum Laufen bringen. Ist das so schwer? Mit einer Sun-JVM mach ich einfach nur -Xmx2048m und es läuft.
(Ja, die IBM-Doku ist nicht schlecht. Aber wenn die das ganze einfach mal richtig (einfach) machen würden, bräuchte man das alles gar nicht.)
Neues von der IBM Java Front. Wir haben die JVM inzwischen einigermassen stabil hingekriegt, nachdem wir MAXDATA so gesetzt haben, daß der native Heap für einen normalen Betrieb ausgereicht hat. Da die Performance des Gesamtsystems aus diversen Gründen
Tracked: Aug 09, 11:33