Die Osm-Daten werden durch die Aktivität der Nutzer letztendlich immer größer und umfangreicher.
Ab einer bestimmten Größe innerhalb eines "tile", 1°x1°-Bereich für XP reicht der reservierte RAM-Speicherplatz durch die Java-Laufzeitumgebung nicht mehr aus.
Das hat Auswirkungen auf den Java Heap (Heap = Haufen, Halde).
Der Heap, so könnte man sagen, ist also ein virtueller Speicherbereich (VM).
Diesem Heap kann aber eine bestimmte Anfangs- sowie Endgröße, also ein Minimum und ein Maximum zugewiesen werden.
Dazu gibt es Befehlszeilen-Parameter, nämlich:
-Xms ----> für den Startbereich (Minimum)
-Xmx ----> für den Endbereich (Maximum)
Bei der Konvertierung einer OSM-Datei trat bei einem "tile" ein Fehler auf, mit der Meldung: java heap space
Durch Vergleich mit einer aus Dezember konvertierten OSM-Szenerie ergab sich für dieses "tile" dort eine Größe von über 13 MB. Alle anderen waren wesentlich kleiner.
Wo kann nun die Min- und Max-Heapgröße für OSM2XP festgelegt werden?
Es ist die Datei osm2xp.ini!
Dort findet ihr:
-Xms128m
-Xmx512m
Also 128 MB für das Minimum und 512 MB für das Maximim.
Für ein 64 bit System ändert die Werte wie folgt ab:
-Xms128m
-Xmx1024m
Für ein 32 bit Sytem versucht folgende Werte:
-Xms128m
-Xmx768m
Sollte das zu klein sein, versucht es auch mit 1024m. Wer aber nur 1 GB RAM hat, wird in die Röhre schauen.
Bei einem 64 bit System und einem RAM von über 5 GB kann auch ein -Xmx2048m eingestellt werden.
Weiterhin ergab sich ein schöner Nebeneffekt bei meinem 64 bit System. Dauerte die Konvertierung mit 512m ca. 20 Minuten, einschließlich Fehler, war es mit 1024m nur noch 3 Minuten ohne Fehler (mit Nordrhein-Westfalen.osm.pbf).