1Danke
ERLEDIGT
JA
JA
ANTWORTEN
2
2
ZUGRIFFE
347
347
EMPFEHLEN
-
25.08.11 10:20 #1
- Registriert seit
- Aug 2011
- Ort
- Cottbus
- Beiträge
- 2
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!!
-
25.08.11 10:53 #2
Hi strahlenglanz und Herzlich Willkommen bei Tutorials,
wenn ich dein Problem ich richtig erkannt habe und deinen Lösungvorschlag in betracht ziehe, würde ich auf folgende Lösung kommen.
Du machst dir ein Java-Programm, von welchem du deine App startest. In diesem "Handler"-Programm sag ich jetzt mal, kannst du auch deine XML-Datei lagern. Oder diese Daten direkt in einem Objekt halten (wäre fast sinnvoller). Wenn du die App dann über den Handler startest, kannst du die XML-Datei/Objekt mit übergeben, dass die App auf die Daten ebenfalls zugriff hat.
Allerdings ist das aus meiner Sicht keine all zu tolle Lösung.
Ich würde die Programme nicht splitten, sondern als ein Programm zusammenfassen und die Programme als Objekte dann sehen. Sprich App-Programm als Objekt und Handler-Programm als Objekt. Also ungefähr so:
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
import java.io.File; public class PictureModifier { private final File xmlFile; private App app; public PictureModifier(File xmlFile) { this.xmlFile = xmlFile; } private void run() { app = new App(xmlFile); String returnValue = app.run(); // Den returnValue könntest du dann auswerten // ... // Das Objekt "App" auf null setzen. Dann wird es vom GC entfernt. app = null; // System.gc(); <-- kannst du aufrufen, sollte aber Java normalerweiße automatisch machen } public static void main(String[] args) { File xmlFile = new File(args[0]); // oder einlesen, je nachdem wie du es machst new PictureModifier(xmlFile).run(); } }
Gruß
FabioGeändert von Fabio Hellmann (25.08.11 um 10:56 Uhr)
Bitte die Code-Tags verwenden. Bei Java-Code: [java]...[/java]
Tutorials:
Automatisches erzeugen eines Inhaltsverzeichnisses (Javascript)
JAnimationPanel - Animationen für Swing/AWT
SWTRatingBar (Bewertungs-Composite) selbst programmieren
____________________________________________________________________________
Über eine Bewertung (Stern links unter dem Beitrag) oder ein Danke freue ich mich sehr.
-
25.08.11 12:33 #3
- Registriert seit
- Aug 2011
- Ort
- Cottbus
- Beiträge
- 2
gute Idee
Danke - jetzt gehts
Ähnliche Themen
-
Aus C++ Anwendung Java-RCP-Anwendung aufrufen
Von Jonny1303 im Forum C/C++Antworten: 4Letzter Beitrag: 08.02.10, 20:13 -
aus C++ Anwendung Java-RCP-Anwendung aufrufen
Von Jonny1303 im Forum Enterprise Java (JEE, J2EE, Spring & Co.)Antworten: 0Letzter Beitrag: 05.02.10, 16:06 -
Win32API Anwendung auf MFC-Anwendung portieren
Von Cappaja im Forum VisualStudio & MFCAntworten: 3Letzter Beitrag: 10.05.09, 16:42 -
Neustart-Funktion einer Anwendung (?)
Von thekona im Forum VisualStudio & MFCAntworten: 4Letzter Beitrag: 03.05.05, 18:29 -
Neustart?
Von aNero im Forum Microsoft WindowsAntworten: 6Letzter Beitrag: 04.04.04, 11:46





Zitieren
Login





