• Willkommen im Geoclub - dem größten deutschsprachigen Geocaching-Forum. Registriere dich kostenlos, um alle Inhalte zu sehen und neue Beiträge zu erstellen.

Out of Memory-Exception beim Spidern

König Moderig

Geowizard
Hallöchen,

haber gerade wenig Zeit, das selber zu regeln, deswegen gebe ich es einfach mal an die Entwicklerschaft weiter.

Beim Spidern von GC.com gibt es bei mir manchmal eine Out of Memory-Exception, so dass sich der CacheWolf verabschiedet (zuletzt bei 215 gespiderten Caches ...). Hier der Stacktrace:

Code:
java.lang.OutOfMemoryError: Java heap space
        at java.util.Arrays.copyOfRange(Arrays.java:3209)
        at java.lang.String.<init>(String.java:216)
        at ewe.util.CharArray.toString(CharArray.java)
        at CacheWolf.SpiderGC.fetch(SpiderGC.java:1151)

Grüße,
Nik[/code]
 

Aszrael

Geocacher
Hallo zusammen,
bei mir tritt das Problem auch bei Aktualisierungen der Cacheliste häufig auf, sobald mehr als ca. 120 gewählt wurden - weniger als 120 aktualisiert Cachewolf ohne Probleme.

Forcieren kann ich den Fehler zB durch minimieren auf Taskleiste und Wechsel zwischen offenen Anwendungen.

Ansonsten läuft Cachewolf wunderbar.

Zum System:
  • OS: Linux (Gentoo)
    cachewolf-v1.0.1532-java
    VM(active): Sun JDK 1.6.0.07 [sun-jdk-1.6]
    VM(fallback generation1): Sun JDK 1.4.2.18 [sun-jdk-1.4]

Fehlerausgabe:
Code:
 $java -jar CacheWolf.jar 
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
	at java.awt.image.DataBufferInt.<init>(DataBufferInt.java:41)
	at java.awt.image.Raster.createPackedRaster(Raster.java:458)
	at java.awt.image.DirectColorModel.createCompatibleWritableRaster(DirectColorModel.java:1015)
	at java.awt.image.BufferedImage.<init>(BufferedImage.java:321)
	at ewe.fx.Image.newBufferedImage(Image.java)
	at ewe.fx.Image.newBufferedImage(Image.java)
	at ewe.fx.Image.create(Image.java)
	at ewe.fx.Image.<init>(Image.java)
	at ewe.fx.Image.<init>(Image.java)
	at ewe.ui.Control.getControlBuffer(Control.java)
	at ewe.ui.Control.repaintNow(Control.java)
	at ewe.ui.Window._doPaint(Window.java)
	at ewe.applet.WinCanvas.addToQueue(WinCanvas.java)
	at ewe.applet.WinCanvas.paint(WinCanvas.java)
	at sun.awt.RepaintArea.paintComponent(RepaintArea.java:248)
	at sun.awt.X11.XRepaintArea.paintComponent(XRepaintArea.java:56)
	at sun.awt.RepaintArea.paint(RepaintArea.java:224)
	at sun.awt.X11.XComponentPeer.handleEvent(XComponentPeer.java:683)
	at java.awt.Component.dispatchEventImpl(Component.java:4489)
	at java.awt.Container.dispatchEventImpl(Container.java:2116)
	at java.awt.Component.dispatchEvent(Component.java:4243)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
java.lang.OutOfMemoryError: Java heap space
	at java.util.Arrays.copyOfRange(Arrays.java:3209)
	at java.lang.String.<init>(String.java:216)
	at ewe.util.CharArray.toString(CharArray.java)
	at CacheWolf.SpiderGC.fetch(SpiderGC.java:1260)
java.lang.OutOfMemoryError: Java heap space
	at java.util.Arrays.copyOfRange(Arrays.java:3209)
	at java.lang.String.<init>(String.java:216)
	at ewe.util.CharArray.toString(CharArray.java)
	at CacheWolf.SpiderGC.fetch(SpiderGC.java:1260)
	at CacheWolf.SpiderGC.getCacheByWaypointName(SpiderGC.java:515)
	at CacheWolf.SpiderGC.spiderSingle(SpiderGC.java:231)
	at CacheWolf.MainMenu.updateSelectedCaches(MainMenu.java:682)
	at CacheWolf.MainMenu.onEvent(MainMenu.java:323)
	at ewe.ui.Control.postEvent(Control.java)
	at ewe.ui.MenuState.onEvent(MenuState.java)
	at ewe.ui.Control.sendToListeners(Control.java)
	at ewe.ui.Control.postEvent(Control.java)
	at ewe.ui.Menu.postEvent(Menu.java)
	at ewe.ui.Menu.onEvent(Menu.java)
	at ewe.ui.Control.sendToListeners(Control.java)
	at ewe.ui.Control.postEvent(Control.java)
	at ewe.ui.Menu.postEvent(Menu.java)
	at ewe.ui.Control.notifyAction(Control.java)
	at ewe.ui.Menu.penReleased(Menu.java)
	at ewe.ui.Control.penClicked(Control.java)
	at ewe.ui.Control.onPenEvent(Control.java)
	at ewe.ui.Menu.onPenEvent(Menu.java)
	at ewe.ui.Control.onEvent(Control.java)
	at ewe.ui.Menu.onEvent(Menu.java)
	at ewe.ui.Control.postEvent(Control.java)
	at ewe.ui.Menu.postEvent(Menu.java)
	at ewe.ui.Window.doPostEvent(Window.java)
	at ewe.ui.Window$windowThread.run(Window.java)
	at ewe.sys.mThread.run(mThread.java)
	at ewe.sys.Coroutine.run(Coroutine.java)

Gruß
Aszrael
 

cache-matze

Geocacher
Hi,

auch bei mir tritt der Fehler auf, sobald ich mehr als ca. 120 Caches markiere und diese aktualisieren lasse.
Dabei kann es sein, dass der Fehler schon nach ca. 70 Caches auftritt.
Markiere ich lediglich ca. 100 Caches, laeuft alles prima durch.

Hat jemand einen Hint wie man das verhindern kann? Hilft es, den JavaSpeicher mit z.B. -Xmx1024m zu vergroessern?

Falls das ein Bug im Code sein sollte: Hat sich das schonmal jemand vom CacheWolf Team angeschaut?

Gruss,

Matze
 

greiol

Geoguru
den speicher zu vergrößen verschiebt das problem zumindestens.
es hilft auch die anzahl der logs auf 5 zu begrenzen.

irgendwo hier gibts einen fred in dem ich ein paar untersuchungen zum speicherverhalten gemacht habe. imho gibt es im cw ein "memory leak" (vermutlich weil ein paar referenzen nicht sauber freigegeben werden), aber gefunden habe ich es noch nicht.
 
Oben