strahlenglanz
Grünschnabel
Hei zusammen,
also ich schreib gerade ein Programm zu Steuerung von Objekten. Ziel is es anhand eines Bildes auszumachen wo jemand sitzt und anhand dessen die jeweiligen Objekte anzusteuern.
Ich starte zuerst einen Restarter, damit ich sowohl den Heap von Java als auch von der genutzen Lib ImageJ zu erhöhen. Aus diesem heraus wird dann die .jar gestartet. Soweit alles ohne Probleme.
Mein Problem liegt jetzt darin: alle 2 sec soll ein Bild von der Kamera gelesen und mit dem Referenzbild verglichen werden - soweit auch kein Problem. Allerdings komme ich mir mit ImageJ ins Gehege - trotz mehrfachen aufrufen des GarbageCollectors und sparsamen Umgang mit ImageJ- Sachen wie ImagePlus, kommt nach ca 80min der Knall - Heapspace übervoll. Man kann auch richtig zusehen wie die Anwendung Speicher frisst.
Leider bin ich auch im ImageJ-Forum zu keiner Lösung gekommen wie man diesen Speicherverbrauch reduzieren kann.
Daher is meine Lösung jetzt (ich hab nur noch 5 Tage und will's wenigstens zum dauerhaften Laufen bringe) ich starte das Programm nach 1000 Durchläufen (in 80min sind ca.1400 möglich) neu mit der aktuellen Konfiguration.
Die Umsetzung ist weiter auch nicht schwierig. Allerdings versuche ich meine aktuelle Konfiguration als .xml zu speichern.
Wenn ich dann allerdings aus meinem Thread heraus (der zum alle 2sec einlesen der Bilder) system.exit(0) aufrufe, wird die .xml gelöscht. Ich erstelle die xml vor dem starten des Threads.
seh ich den Wald vor lauter Bäumen grad nicht? Meine Vermutung ist, dass es was mit den Threads zu tun hat.
restarter -> java heap + imagej hochsetzen, starten der eigentlich app.jar
app.jar -> eigentliche Programmausführung, das zeitabhängige Bildereinlesen erfolgt in eigenem Thread
Danke schonmal für eventuelle Tipps!!
also ich schreib gerade ein Programm zu Steuerung von Objekten. Ziel is es anhand eines Bildes auszumachen wo jemand sitzt und anhand dessen die jeweiligen Objekte anzusteuern.
Ich starte zuerst einen Restarter, damit ich sowohl den Heap von Java als auch von der genutzen Lib ImageJ zu erhöhen. Aus diesem heraus wird dann die .jar gestartet. Soweit alles ohne Probleme.
Mein Problem liegt jetzt darin: alle 2 sec soll ein Bild von der Kamera gelesen und mit dem Referenzbild verglichen werden - soweit auch kein Problem. Allerdings komme ich mir mit ImageJ ins Gehege - trotz mehrfachen aufrufen des GarbageCollectors und sparsamen Umgang mit ImageJ- Sachen wie ImagePlus, kommt nach ca 80min der Knall - Heapspace übervoll. Man kann auch richtig zusehen wie die Anwendung Speicher frisst.
Leider bin ich auch im ImageJ-Forum zu keiner Lösung gekommen wie man diesen Speicherverbrauch reduzieren kann.
Daher is meine Lösung jetzt (ich hab nur noch 5 Tage und will's wenigstens zum dauerhaften Laufen bringe) ich starte das Programm nach 1000 Durchläufen (in 80min sind ca.1400 möglich) neu mit der aktuellen Konfiguration.
Die Umsetzung ist weiter auch nicht schwierig. Allerdings versuche ich meine aktuelle Konfiguration als .xml zu speichern.
Wenn ich dann allerdings aus meinem Thread heraus (der zum alle 2sec einlesen der Bilder) system.exit(0) aufrufe, wird die .xml gelöscht. Ich erstelle die xml vor dem starten des Threads.
seh ich den Wald vor lauter Bäumen grad nicht? Meine Vermutung ist, dass es was mit den Threads zu tun hat.
restarter -> java heap + imagej hochsetzen, starten der eigentlich app.jar
app.jar -> eigentliche Programmausführung, das zeitabhängige Bildereinlesen erfolgt in eigenem Thread
Danke schonmal für eventuelle Tipps!!