Speicher reservieren

  • Themenstarter Stefan_Schottland
  • Beginndatum
Status
Nicht offen für weitere Antworten.
S

Stefan_Schottland

Gast
Hallo zusammen,

ich moecht eure Meinung zu folgendem Thema hoeren:

Fuer eine Instrument zum Messen von Bewegungen von Personen muss ich ein Java Programm schreiben.
Das ganze soll in Echtzeit ablaufen. Es wird kein Real-Time Java verwendet.
Wie jeder weiss ist normales Java nicht fuer Real-Time anwendungen geeignet. Der Garbage-Collector hat
nunmal die hoechste Prioritaet und funkt einem immer dann dazwischen wenn man es nicht brauchen kann.
Die Philosophie meines Arbeitgebers ist es einefach waehrend ein Prozess laueft (while(true)-Schleife) einfach
kein "new" zu machen. wo kein Speicher allociert wird kann auch keiner aufgeraeumt werden.

Nun meine eigentliche Frage:
Wenn ich zum Beispiel am Anfang (Konstruktor) eines Prozesses ein Array allocciere
(Person[] arr = new Person[10]) wie wird dann der Speicher reserviert. Vor allem wie laeuft das wenn ein Objejt
vom typ Person selber noch irgendwelche Collections beherbergt. Dann kann man ja gar nicht wissen wieviele
Bytes das Array beansprucht. Oder allocciere ich etwa nur ein Arry aus Pointern auf Person Objecte?

Fragen ueber Fragen. Ich hoffe ihr koennt mir helfen.

Gruesse aus Schottland,

Stefan
 
B

bygones

Gast
wegen den Collections:
Das hängt davon ab. Z.b Vectoren sind nichts anderes als Arrays für Java. Wenn du einen Vector erzeugst ohne die Kapazität festlegst. Alloziert er erst für 10 Objekte (meines Wissens vom Typ Object). Hast du 10 Objekte eingefügt wird der Array vergrößert (ich glaube default ist doppelt so groß) und es beginnt schönes rumkopieren. (du kannst natürlich auch von anfang an die Größe festlegen)
Anders z.B. bei LinkedList: das kannst du soviele Objekte wie möglich hinzufügen, da einfach nur die Links in der Liste "umgehängt" werden....
(ohne Gewähr).

Aber ehrlich gesagt würde ich nicht auf 100% Echtzeit setzen, keine Ahnung wie sich der GC doch mal einschaltet und nur überprüft ob er was zu tun hat....

Gruß aus England
 

schalentier

Gesperrter Benutzer
Also erstmal hast du keinen Einfluss auf das Verhalten des GCs. Von Sun ist meines Wissens nach nur vorgegeben, dass da ein GarbageCollector sein soll, da java keine mittel bereitstellt um speicher frei zu geben.
Wann der GC, was macht und ob er das ueberhaupt tut, ist alleine davon abhaengig, welche vm du einsetzt. es gibt zwar eine Methode (ich glaub bei System oder so), mit der du den gc aufrufen kannst, allerdings ist nirgendwo spezifiziert, was da passiert.
Also ist es relativ egal, ob du in einer schleife neue objekte erzeugst oder auch nicht. generell gilt natuerlich, was ausserhalb einer schleife geht, das mach auch ausserhalb.

Die Klasse Vector hat nix mit Arrays zu tun (kann sein, dass ich meinen vorredner falsch verstanden habe). Vector ist die einzige Klasse des Java Collection Frameworks die (thread)synchronisiert ist. damit ist Vector grundsaetzlich langsamer als ein normales Array. Ausserdem ist Vector (zumindest im aktuellen java) nicht getypt, ein array schon.

die anweisung Person[] arr = new Person[10] initialisiert keine Instanzen von Person, sondern legt ein Feld an, in welches 10 Referenzen von Personenobjekten passen. Man kann dieses array nicht nachtraeglich vergroessern (ausser durch rumkopieren). Es werden also nur 10 "pointer" erzeugt.

gl&hf
 
B

bygones

Gast
schalentier hat gesagt.:
Die Klasse Vector hat nix mit Arrays zu tun (kann sein, dass ich meinen vorredner falsch verstanden habe). Vector ist die einzige Klasse des Java Collection Frameworks die (thread)synchronisiert ist. damit ist Vector grundsaetzlich langsamer als ein normales Array. Ausserdem ist Vector (zumindest im aktuellen java) nicht getypt, ein array schon.
Ich meinte die Klasse Vector so implementiert, dass sie eigentlich nur ein Array ist (zu sehen im source code von java) !!
 
B

Beni

Gast
Du solltest Dir aber auch überlegen, wie du die Arbeit des GC's beschleunigen kannst.

- Nicht mehr gebrauchte Variablen auf null setzen.
- alte, nicht mehr gebrauchte Objekte sammeln, und später neu füllen (anstelle eines new)
- Objekte mehrmals verwenden (5 mal "Arial, schwarz, fett, 15" initialisieren ist falsch...)
 
S

Stefan_Schottland

Gast
Danke fuer eure Hilfe!

Jetzt weiss ich dass ich wie immer doch vom schlimmsten ausgehen muss.

Gruesse,
Stefan
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Virtueller Speicher Allgemeine Java-Themen 36
sascha-sphw Auf GoPro Speicher zugreifen Allgemeine Java-Themen 10
TheJavaKid Mit Java die Festplatte mit dem meisten freien Speicher finden Allgemeine Java-Themen 7
J Strings int textdokumente speicher Allgemeine Java-Themen 3
M Eine Datei im Speicher erneut laden(?) Allgemeine Java-Themen 1
L Input/Output Datei in den Speicher lesen. Allgemeine Java-Themen 9
Thallius Wie mache ich eine Java App mit Icon startbar die mehr Heap Speicher braucht? Allgemeine Java-Themen 3
P Große Datenstruktur im Speicher halten Allgemeine Java-Themen 13
H Frage wegen Heap-Speicher Allgemeine Java-Themen 2
M Speicher der VM Allgemeine Java-Themen 4
W PDFBox "Nicht genügend Speicher" Allgemeine Java-Themen 2
S Speicher-Problem Allgemeine Java-Themen 4
C Strings und JSON Objekte so klein wie möglich im Speicher ablegen Allgemeine Java-Themen 5
V Input/Output BufferedI/OStream leert den Speicher Allgemeine Java-Themen 7
G Speicher erhöhen Allgemeine Java-Themen 10
R Programm frisst 'Virtuellen Speicher' wie PacMan Allgemeine Java-Themen 4
P Java Anwendung mehr Speicher zur Verfügung stellen?? Allgemeine Java-Themen 3
A 2D-Grafik 2MB jpg wird zu 300MB im speicher (fehler) Allgemeine Java-Themen 8
E Speicherverwaltung bzw. Speicher wieder frei geben?! Allgemeine Java-Themen 8
D Speicher beim Start zuweisen Allgemeine Java-Themen 10
S Bei Sortierung Speicher zu gering? Allgemeine Java-Themen 8
hdi Was frisst in meinem Programm den Speicher / verschlechtert die Performance Allgemeine Java-Themen 11
S Jar Datei mit mehr Speicher starten Allgemeine Java-Themen 2
S JAR Datei, mehr Speicher bereitstellen Allgemeine Java-Themen 5
S Viele Bilder -> Speicher ausgelastet? / (De-)serialisierung geht nicht mehr richtig Allgemeine Java-Themen 8
E Speicher frei machen (List) Allgemeine Java-Themen 9
J Speicher Probleme vorbeugen Allgemeine Java-Themen 8
C Laden / Speicher Allgemeine Java-Themen 8
R Eigener Assoziativ-Speicher Allgemeine Java-Themen 7
R Assoziativer Speicher welche Unterschiede? Allgemeine Java-Themen 5
S Zugesicherter Speicher der jvm nach Programmstart erhöhen Allgemeine Java-Themen 6
G FIFO Speicher nachbilden Allgemeine Java-Themen 2
G restlichen freien Speicher ermitteln? Allgemeine Java-Themen 3
M Variablen Speicher wieder freigeben ? Allgemeine Java-Themen 9
J Wieviel Speicher maximal? Allgemeine Java-Themen 14
T Sortierter assoziativer Speicher mit Filter Allgemeine Java-Themen 4
L JVM: Speicher wieder für OS freigeben? Allgemeine Java-Themen 5
M Heap Speicher voll bei spezieller Resize Methode Allgemeine Java-Themen 5
R Gibt es eine JVM, die besser mit dem Speicher umgeht? Allgemeine Java-Themen 7
F OutOfMemoryError: Java heap space - Speicher verändern Allgemeine Java-Themen 8
O Datei im Speicher halten Allgemeine Java-Themen 4
C Speicher Problem Allgemeine Java-Themen 3
S TreeSet benötigt zu viel Speicher Allgemeine Java-Themen 5
J Out Of Memory - Speicher vergrößern? Allgemeine Java-Themen 2
L Nutzt Java bei Start der VM übermäßig viel Speicher? Allgemeine Java-Themen 3
F CPU auslastung wenn Speicher mit -Xmx erhöht Allgemeine Java-Themen 4
S Auslagerungsdatei (Speicher) werde voll Allgemeine Java-Themen 2
G Panel mit vielen Komponenten verbraucht viel Speicher Allgemeine Java-Themen 3
S Speicher Allgemeine Java-Themen 2
m@nu doppelte daten im speicher? Allgemeine Java-Themen 2
G Speicher Allgemeine Java-Themen 3
H wie viel speicher braucht eigentlich ein array? Allgemeine Java-Themen 2
A Speicher/Anzeige Problem in JTable Allgemeine Java-Themen 2
D Speicher der VM für ausführbares Jarfile erhöhen Allgemeine Java-Themen 4
D Eine geladene Klasse aus dem Speicher holen? Allgemeine Java-Themen 9
J in file schreiben frisst den speicher Allgemeine Java-Themen 5
P benötigter Speicher für Objekt Allgemeine Java-Themen 5
D Wieviel Speicher kann die VM verwalten? Allgemeine Java-Themen 18
C Über C/C++ (JNI) angeforderten Speicher wieder frei geben Allgemeine Java-Themen 3
H Speicher freigeben klappt nicht bei Image Objekten, warum? Allgemeine Java-Themen 8
B Kostet das speichern von Variablen zusätzlichen speicher? Allgemeine Java-Themen 2
T Speicher für die VM ändern Allgemeine Java-Themen 17
S Static + Speicher + Bytecode etc. Brauche HILFE :/ Allgemeine Java-Themen 11
H Wie Cpu- und Speicher- Auslastung in Java auslesen Allgemeine Java-Themen 4
F Verfügbaren Heap-Speicher setzen Allgemeine Java-Themen 2
C RAM Speicher in Datei auslagern (Java Swapping) Allgemeine Java-Themen 4
N Speicher Problem bei grossem Heap Allgemeine Java-Themen 15
R nichtmehr benötigtes BufferedImages aus dem Speicher entfern Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben