Anmelden AnmeldenSchließen
| Passwort vergessen?
Reit- und Wanderkarte
Forum | Registrieren | Suche      Anmelden     1 Benutzer online
Exception in thread "Generieren (action)" java.lang.OutOfMemoryError: GC overhead limit exceeded
 1
19.03.17 18:13
Garminix 
Exception in thread "Generieren (action)" java.lang.OutOfMemoryError: GC overhead limit exceeded

Hallo Mapcomposer-Fans,

ich bin mittlerweile total begeistert von dem Programm und die einfache Anpassungsmöglichkeiten über die Render- / Ersetzungsregeln.

Doch leider stoße ich grad an meine Grenzen ;)

Ich habe bis jetzt immer nur einzelne Länder bzw. kleine Bereiche erstellt (dank Nop, jetzt ohne Fehler).

Ich wollte gestern als Grundkarte für mein Garmin Montana eine aktuelle Karte von Deutschland/Schweiz/Österreich erstellen, dazu hab ich mir die 3,7 Gb bei Geofabrik runtergeladen und den Erstellungsprozess gestartet.

Leider bekommen ich beim Prozess-Schritt "Analysiere Daten für . . ." folgenden Fehler:

Exception in thread "Generieren (action)" java.lang.OutOfMemoryError: GC overhead limit exceeded
at nop.osmc.generator.Analyzer.getNode(Analyzer.java:488)
at nop.osmc.generator.Analyzer.readData(Analyzer.java:417)
at nop.osmc.generator.Analyzer.standardAnalysis(Analyzer.java:115)
at nop.osmc.generator.Analyzer.analyze(Analyzer.java:72)
at nop.osmc.generator.Mapper.generate(Mapper.java:202)
at nop.osmc.MapComposer$12.act(MapComposer.java:414)
at nop.gui.MenuThreadAction.run(MenuThreadAction.java:27)
at java.lang.Thread.run(Unknown Source)


Ich starte die "start_x64_bat" mit "Xmx6000". Sollte also genügend Speicher da sein. Auch ein reduzieren der Maximalen Objekte / kachel von 2000 auf 1000 und Erhöhen des Speichers für JavaAufrufe auf 1600 brachte kein Erfolg.

Kann ich noch etwas anderes anpassen (hab 8 GB Hauptspeicher)?

Danke euch.

Gruß,

Garminix

19.03.17 18:51
Nop 

Administrator

Re: Exception in thread "Generieren (action)" java.lang.OutOfMemoryError: GC overhead limit exceeded

Der "Speicher für Java Aufrufe" und die maximalen Objekte spielen hier keine Rolle.

Hast Du das Häkchen "Schnell" hinter "Composer / Daten verarbeiten" gesetzt?

Falls nicht versucht Composer alle Punkte nach ID zu sortieren - und dafür reicht vermutlich Dein Speicher nicht aus. Das ist bei PBFs aber auch gar nicht nötig.

bye, Nop

Zuletzt bearbeitet am 20.03.17 13:19

21.12.17 18:04
mtbbiker99 

Re: Exception in thread "Generieren (action)" java.lang.OutOfMemoryError: GC overhead limit exceeded

Hallo zusammen,

verzweifel gerade... den gleichen bzw. so einen ähnlichen Fehler bekomme ich zur Zeit auch...


Bei mir bricht der Map composer an der gleichen Stelle ab, also bei Analysiere Daten für.... /LOG-Fenster: Newer input file detected Obwohl keine neuen "Input-Dateien" da sind.
Das Verändern der JAVA-Werte von 1100 bis zu 6666 brachte auch keinen Erfolg.

Das komische ist, dass es gestern noch ging.

commands.log:

Nop:
...

Falls nicht versucht Composer alle Punkte nach ID zu sortieren - und dafür reicht vermutlich Dein Speicher nicht aus. Das ist bei PBFs aber auch gar nicht nötig.


Wäre dann die einzige Maßnahme ein RAM-Erweiterung und wie bringe ich den composer dazu nicht nach ID zu sortieren?

Gruß mtbbiker99
(Garmin GPSmap64s, etrex 20x, Colorado300, Ubuntu17.10)

Zuletzt bearbeitet am 21.12.17 18:21

22.12.17 00:13
mtbbiker99 

Re: Exception in thread "Generieren (action)" java.lang.OutOfMemoryError: GC overhead limit exceeded

Hallo nochmal,

nerven will ich nicht, aber nach einem Urlaubstag tüfteln habe ich folgendes herausgefunden:
- map composer 1.0 läuft bei mir auf einem Ubuntu 17.10 System bei kleinen Karten wie das Ruhrgebiet ohne Probleme
- beim Erstellen einer größeren Karten von NRW kamen die o.g Java-Probleme auf

Meine Lösung:
Java 9 aus offizellen Paket-Quellen installieren!



Gruß mtbbiker99
(Garmin GPSmap64s, etrex 20x, Colorado300, Ubuntu17.10)

23.12.17 11:32
Nop 

Administrator

Re: Exception in thread "Generieren (action)" java.lang.OutOfMemoryError: GC overhead limit exceeded

Am effizientesten läuft Composer mit .PBF Dateien und dem aktivierten Häkchen "schnell". Viel Speicher verbraucht er bei großen Karten aufgrund der großen Datenmenge immer.

Der Speicherüberlauf tritt hier eindeutig beim Lesen aus der .PBF-Datei auf. Eigentlich sollte es immer Abhilfe schaffen, den -Xmx Parameter beim Aufruf zu erhöhen oder den Verbrauch von Composer durch Verkleinern von "Nodecache" zu reduzieren. Er läuft bei letzterem dann halt langsamer.

Aber eine Karte von NRW sollte mit -Xmx6000M überhaupt kein Problem sein. Das ist alles recht merkwürdig - auch daß es nur vorübergehend auftritt.

Welches JRE/JDK genau hast Du denn verwendent wo das Problem aufgetreten ist?

bye, Nop

23.12.17 19:57
mtbbiker99 

Re: Exception in thread "Generieren (action)" java.lang.OutOfMemoryError: GC overhead limit exceeded

Nop:
....Eigentlich sollte es immer Abhilfe schaffen, den -Xmx Parameter beim Aufruf zu erhöhen oder den Verbrauch von Composer durch Verkleinern von "Nodecache" zu reduzieren. Er läuft bei letzterem dann halt langsamer.

Wo stelle ich denn den -Xmx Parameter ein? Ist damit der Nodecache gemeint (Standard ist da 1000)?


Nop:

Welches JRE/JDK genau hast Du denn verwendent wo das Problem aufgetreten ist?


Die besagten Probleme hatte ich bei folgender Version:

mtbbiker99@mtbbiker99:~/map_composer_100$ java -version
openjdk version "1.8.0_151"
OpenJDK Runtime Environment (build 1.8.0_151-8u151-b12-0ubuntu0.17.10.2-b12)
OpenJDK 64-Bit Server VM (build 25.151-b12, mixed mode)

Jetzt habe ich die JAVA-Version 9 (siehe oben) aufgespielt und die Probleme sind verschwunden. NRW ist kein Problem mehr.

Gestern habe ich etliche Durchläufe vorgenommen und jedes mal von vorne angefangen, also den kompletten map_composer_100-Ordner immer wieder geleert.
Ca. 28 Minuten dauert bei mir der komplette Durchlauf bei diesem Laptop:



Gruß mtbbiker99
(Garmin GPSmap64s, etrex 20x, Colorado300, Ubuntu17.10)

Zuletzt bearbeitet am 23.12.17 20:04

23.12.17 20:43
Nop 

Administrator

Re: Exception in thread "Generieren (action)" java.lang.OutOfMemoryError: GC overhead limit exceeded

-Xmx ist ein Java-Parameter und wird im Startscript/batch Datei eingestellt, z.B.

sagt Java, daß es bis zu 2 GB Speicher verwenden darf.

Nodecache ist eine Einstellung innerhalb von Composer, die ihm sagt wieviele Punkte aus dem OSM-Daten er im Speicher halten soll. Je größer dieser Wert umso schneller läuft Composer bei großen Karten und umso mehr Speicher verbraucht er. Wenn der Speicherverbrauch hier größer wird als der mit -Xmx erlaubte Speicher gibt es einen Fehler.

In Deinem Fall vermute ich daß Du über eine Spezialität des OpenJDK gestolpert bist. Ich verwende das Oracle JDK 1.8 unter Windows, da habe ich sowas nie beobachtet.

bye, Nop

23.12.17 21:17
mtbbiker99 

Re: Exception in thread "Generieren (action)" java.lang.OutOfMemoryError: GC overhead limit exceeded

Danke für die schnelle Antwort.

Abschließend, damit ich das richtig verstanden habe. Bei solchen Fehler den Nodecache verkleinern bzw. so wie es der user Garminix getan
den -Xmx Wert auf 6000 erhöhen (wei mir wäre teoretisch 5500 frei)?


Gruß mtbbiker99
(Garmin GPSmap64s, etrex 20x, Colorado300, Ubuntu17.10)


ps.: Ich wünsche schon mal schöne Feiertage.

24.12.17 10:15
Nop 

Administrator

Re: Exception in thread "Generieren (action)" java.lang.OutOfMemoryError: GC overhead limit exceeded

Wenn man das Optimum herauskitzeln möchte:
- ausprobieren wie hoch man mit -Xmx gehen kann. Wenn der Wert zu hoch ist meldet Java sofort einen Fehler und startet erst gar nicht.
- danach mit htop, Process Explorer oder so dem Composer beim Arbeiten zusehen, wieviel Speicher er tatsächlich nutzt. Wenn der höchste Wert deutlich unter dem -Xmx Wert ist, Nodecache ein Stück erhöhen.

Ich fahre Composer bei mir mit -Xmx:20000M und Nodecache 6000. Aber mein Rechner ist mit 32GB auch extra für Kartenerzeugung gebaut.

bye, Nop

Zuletzt bearbeitet am 24.12.17 10:16

 1
Forum | Registrieren | Suche
Impressum - Datenschutz
Powered by: phpFK - PHP-Forum ohne MySQL modified 8.0 | Download | Alternativ: phpFK