Diese Website existiert nur weil wir Werbung mit AdSense ausliefern.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.

cw-ppc2003.jnf > rev 1.1.2555 macht Probleme

Papierloses Cachen.

Moderatoren: arbor95, pfeffer, MiK

Benutzeravatar
pfeffer
Geowizard
Beiträge: 2249
Registriert: Mo 31. Jul 2006, 21:20

Re: cw-ppc2003.jnf > rev 1.1.2555 macht Probleme

Beitrag von pfeffer »

Das Speicher-Management findet sich in ewe_vm.c ab Zeile 6870.

Es ist ja irgendwie seltsam, dass eine kleinere Zahl hier besser zu sein scheint.
Vielleicht kann mal jemand versuchen herauszufinden, welche Exception genau auftritt und am besten auch mit Zeilennummern im Ewe-Code, damit man im Ewe-Source-Code gucken kann, wann die geworfen wird.

Gruß,
Pfeffer.
Dokumentation mit FAQ zum CacheWolf (Paperless Geocaching): http://cachewolf.org/
maierkurt
Geowizard
Beiträge: 2682
Registriert: Mi 23. Jan 2008, 09:55

Re: cw-ppc2003.jnf > rev 1.1.2555 macht Probleme

Beitrag von maierkurt »

pfeffer hat geschrieben:Vielleicht kann mal jemand versuchen herauszufinden, welche Exception genau auftritt
Es trifft diese Exception auf: (den Xmx Schalter habe ich einfach mal auf 64 gesetzt)

Code: Alles auswählen

SystemResourceException in MovingMap.java Zeile 1705
ewe.sys.SystemResourceException: System could not create bitmap
	at ewe.fx.Image._nativeCreate(Image.java:<native method>)
	at ewe.fx.Image.decodeFrom(Image.java:376)
	at ewe.fx.Image.decodeFrom(Image.java:284)
	at ewe.fx.Image.<init>(Image.java:1408)
	at ewe.fx.Image.<init>(Image.java:1424)
	at CacheWolf.navi.MapImage.<init>(MapImage.java:30)
	at CacheWolf.navi.MovingMap.setMap(MovingMap.java:1658)
	at CacheWolf.navi.MovingMap.setBestMap(MovingMap.java:1463)
	at CacheWolf.navi.MovingMap.loadBestMap(MovingMap.java:977)
	at CacheWolf.navi.MovingMap.updatePosition(MovingMap.java:988)
	at CacheWolf.navi.MovingMap.myExec(MovingMap.java:395)
	at CacheWolf.MainTab.SwitchToMovingMap(MainTab.java:350)
	at CacheWolf.navi.GotoPanel.switchToMovingMap(GotoPanel.java:313)
	at CacheWolf.navi.GotoPanel.onEvent(GotoPanel.java:373)
	at ewe.ui.Control.postEvent(Control.java:1380)
	at ewe.ui.Control.notifyAction(Control.java:1795)
	at ewe.ui.ButtonControl.fullAction(ButtonControl.java:156)
	at ewe.ui.ButtonControl.fullAction(ButtonControl.java:148)
	at ewe.ui.ButtonControl.penReleased(ButtonControl.java:123)
	at ewe.ui.Control.penClicked(Control.java:2376)
	at ewe.ui.Control.onPenEvent(Control.java:2144)
	at ewe.ui.Control.onEvent(Control.java:1439)
	at ewe.ui.Control.postEvent(Control.java:1375)
	at ewe.ui.Window.doPostEvent(Window.java:1171)
	at ewe.ui.Window$windowThread.run(Window.java:771)
	at ewe.sys.mThread.run(mThread.java:250)
pfeffer hat geschrieben:und am besten auch mit Zeilennummern im Ewe-Code, damit man im Ewe-Source-Code gucken kann, wann die geworfen wird.
Ähm, ja. DAS übersteigt im Moment leider meine Fähigkeiten


Gruß, maierkurt

EDIT: [qoute="araber95"]Die NPE in fillwhite ist "nur" ein Folgefehler, da die Karte wegen resmangel nicht geladen werden konnte.[/quote]
Habs rausgenommen.
Zuletzt geändert von maierkurt am Mi 5. Mai 2010, 20:41, insgesamt 1-mal geändert.
Läuft!
Benutzeravatar
arbor95
Geoguru
Beiträge: 6007
Registriert: So 4. Jan 2009, 20:28
Wohnort: 72800 Eningen u.A.
Kontaktdaten:

Re: cw-ppc2003.jnf > rev 1.1.2555 macht Probleme

Beitrag von arbor95 »

Die NPE in fillwhite ist "nur" ein Folgefehler, da die Karte wegen resmangel nicht geladen werden konnte.
Bild
Benutzeravatar
pfeffer
Geowizard
Beiträge: 2249
Registriert: Mo 31. Jul 2006, 21:20

Re: cw-ppc2003.jnf > rev 1.1.2555 macht Probleme

Beitrag von pfeffer »

@maierkurt: genau so eine Ausgabe habe ich gemeint. - danke!

Habe mir dazu den passenden ewe-code in C rausgesucht.
Wenn ich das richtig interpretiere, dann wird für die Bilder nicht der normale Heap der VM benutzt, sondern entweder per malloc(size), per CreateCompatibleBitmap(handle, width, hight) oder CreateDIBSection(..) direkt vom Betriebssystem (Windows) Speicher angefordert (ewe.fx.Image._nativeCreate ist in C ImageCreate in der Datei nmwin32_c.c und wirft die von maierkurt zitierte Exception, die hier über returnBmpException() erzeugt wird. ImageCreate ruft InitImage auf, welches entweder über CreateCompatibleBitmap oder über CreateDIBSection Speicher direkt vom Betriebssystem anfordert.)
Das erklärt auch, warum -Xmx nicht zu groß sein darf, weil dann der noch freie, vom Betriebssystem verwaltete Speicher kleiner wird.
Der Heap ist für das Betriebssystem ein großes Objekt, die darin abgelegten Objekte verwaltet die Ewe-VM selbst (wobei die Objekte selbst von unten auf den Heap abgelegt werden und die Verwaltungsinformationen für die Objekte von Oben). Bei Bedarf vergrößert die Ewe-VM den Heap, verwendet dazu aber (wenn man Pech hat) ein doofes Verfahren: als erstes fordert sie vom Betriebssystem Speicher an, der die neue Größe hat. Dann kopiert sie den Inhalt des Heaps dorthin. Das bedeutet, mehr als die Hälfte des RAM wird die Ewe-VM als Heap kaum nutzen können.
Die SystemResourceException verweist offenbar darauf, dass nicht der Heap zu klein ist, sondern das Betriebssystem den angeforderten Speicher nicht zur Verfügung stellen konnte. Das könnte der Unterschied zum OutOfMemeoryError sein.

EDIT:
Eine weitere wichtige Konsequenz ist: die Garbage Collection funktioniert für Bilder nicht: Bilder müssen unbedingt per image.free() dealloziert werden. Um das debuggen zu können hat die Klasse ewe.fx.Image ein public static int numImages, der die Anzahl der Bilder angibt, die erzeugt wurden, aber nicht mittels image.free() dealloziert wurden.

Gruß,
Pfeffer.
Dokumentation mit FAQ zum CacheWolf (Paperless Geocaching): http://cachewolf.org/
Benutzeravatar
arbor95
Geoguru
Beiträge: 6007
Registriert: So 4. Jan 2009, 20:28
Wohnort: 72800 Eningen u.A.
Kontaktdaten:

Re: cw-ppc2003.jnf > rev 1.1.2555 macht Probleme

Beitrag von arbor95 »

Was können wir also für unsere Aufgabenstellung daraus für Folgerungen herleiten?
Bild
Benutzeravatar
pfeffer
Geowizard
Beiträge: 2249
Registriert: Mo 31. Jul 2006, 21:20

Re: cw-ppc2003.jnf > rev 1.1.2555 macht Probleme

Beitrag von pfeffer »

ich sehe vorallem 2 Sachen:

1. Der Parameter -Xmx, der die Ewe-VM-Heapgröße angibt, sollte so groß gewählt werden, dass alle Objekte da hineinpassen, außer Bilder. Da die Bilder in dem Teil des RAMs abgelegt werden, der neben dem Heap noch übrig ist, muss bei der Festlegung der Heap-Größe außerdem darauf geachtet werden, dass noch genug RAM für alle Bilder zur Verfügung steht.

2. Man sollte mal die MovingMap beobachten, ob bei allen Bildern der Bildspeicher per image.free() auch wieder freigegeben wird. Das kann man, in dem man den Bildspeicherzähler Image.numImages beobachtet. Kandidaten dafür könnten das Zoomen und die "weiße Fläche-füllen"-Funktion sein, denn dabei wurde ja mehrfach von Speicherproblemen berichtet.

Gruß,
Pfeffer.
Dokumentation mit FAQ zum CacheWolf (Paperless Geocaching): http://cachewolf.org/
Benutzeravatar
pfeffer
Geowizard
Beiträge: 2249
Registriert: Mo 31. Jul 2006, 21:20

Re: cw-ppc2003.jnf > rev 1.1.2555 macht Probleme

Beitrag von pfeffer »

Ich dachte, vielleicht kann ich Euch beim experimentieren unterstützen - mehr wollte ich nicht.

Gruß,
Pfeffer.
Dokumentation mit FAQ zum CacheWolf (Paperless Geocaching): http://cachewolf.org/
Antworten