Variablen viele Instanzvariablen vermeiden

sewagii

Mitglied
Hi,

Bestimmte Variablen von Instanzen sollen immer gleich sein. Wie kann ich es bewerkstelligen nicht für jede Instanz neue Instanzvariablen anzulegen?

-Alle Instanzen beziehen die Variablen aus einer anderen Instanz einer anderen Klasse.
-....

mfg
 

sewagii

Mitglied
Sie werden dann aber für jede weitere Instanz neu erstellt und belegen Speicher?
Aber welche Möglichkeiten gibt es diese "auslagern"?
 

sewagii

Mitglied
"Aber welche Möglichkeiten gibt es diese "auslagern"? "

Hat sich mit den statischen Variablen gelöst.


Meine Idee war unter andern eine Klasse, die Variablen/Konstanten bereitstellt.
Eine erstellte Instanz hätte genügt um die Instanzen einer anderen Klasse mit Variablen zu versorgen.
Sehe ich es richtig, dass diese "Idee" auch nicht groß mehr Speicher verbraucht als eine Konstante?
 

Schandro

Top Contributor
Also mal ganz ehrlich: Solange zu nicht Strings mit ner Textlänge im Millionenbereich im RAM haben willst ist es sowas von s****** egal wieviel Speicher die brauchen. sry für die Ausdrucksweise, aber es hört sich so an als würdest du ein Performanceproblem optimieren wollen was überhaupt nicht existiert und was Nanosekunden in der Berechnung verbraucht.

Und es macht keinen Unterschied im Speicherverbrauch in welcher Klasse du de Konstanten ablegst.
 

hdi

Top Contributor
Hey,

Ich will auch mal ein paar Worte zu diesem Thema loswerden, denn ich hab Angst dass du das alles etwas falsch verstehst (@TO).
In der FAQ liegt ein Beitrag zum Thema Speicherbelegung, der kann dir schon mal Grundlegendes erklären.

http://www.java-forum.org/allgemeines/130082-crashkurs-speicherbelegung.html#post850088

Und nun die Frage: Wieviel Speicher belegt in deinem Fall eine Instanz, und wieviel Instanzen beabsichtigst du zu erzeugen?
 
Zuletzt bearbeitet:
S

Spacerat

Gast
Aber, anscheinend geht's bei diesem gleichen Wert für alle Instanz-Variablen hier um nen String, so wie ich das jetzt mitbekommen hab?! Nun hier hab ich ne gute Nachricht für dich:
Sofern du den String als Literal erzeugst, d.h. ohne new-Aufruf sondern einfach über VAR = "Mein Text" landet dieser im sog. String Constant Pool, und den Teilen sich eh alle Variablen. Du kannst dann ganz normal für jede Instanz schreiben:

Java:
class MyInstance{
   private String myString = "Ich lande im Constant Pool";
}

Und obwohl es ne Instanz-Variable ist gibt's das String-Objekt nur 1x im Speicher, egal wieviele Instanzen du hast. Das ist so n Sonderding bei Strings, also wenn es um Strings bei dir geht, dann ist das Thema eh gegessen.
Vorsicht Falle! Jede Instanzvariable belegt Speicher! Und zwar mindestens stets die Länge einer Referenz bzw. den Zeiger auf die erste Speicherstelle des Objektes - soweit ich weis, sind das auch in Java stets 8 Bytes bzw. 64 Bit. Einige Primitivtypen dagegen belegen natürlich etwas weniger. Davon ausgenommen: Arrays aus Primitivtypen.
 

hdi

Top Contributor
@Spacerat das habe ich ja erwähnt:

Anders sieht das aus bei komplexen Daten, also wenn VALUE jetzt vom Typ String oder Object etc wären, da hier dann in var1 im obigen Beispiel lediglich eine Referenz gespeichert wird. Die alleine belegt zwar auch schon Speicher für jede einzelne Instanz, aber nur 4 Byte (unabhängig davon wie viel Speicher das referenzierte Objekt belegt).

Du sagst nun es sind 8 Byte. Das kann sein, dass ich mich da irre. Vllt hängt das auch vom Betriebssystem ab (x86 vs x64).

PS: Ich war eh grad dabei meinen Beitrag zu editieren weil ich das alles noch etwas genauer beschreiben will. Das Thema is nämlich durchaus interessant aber auch nicht so trivial.
 
S

Spacerat

Gast
Oki... auch guten Morgen... ich hab' wohl noch gepennt und seelig etwas überlesen. ;)
[EDIT]...aber davon mal ab... so schwierig ist das Thema gar nicht.[/EDIT]
 

hdi

Top Contributor
Naja, "schwierig" ist relativ. Wenn man erstmal was verstanden hat, ist es nie schwierig, eben weil man's ja verstanden hat ;) Klar es ist keine Quantenphysik aber ich meine es ist halt doch komplexer als man als Noob annehmen würde, um man muss da schon ein par Details zu wissen, alleine zB über den String Constant Pool. Ich hab den Beitrag jetzt überarbeitet und glaube ich das ganz gut alles zusammengefasst. Oder hab ich was vergessen, oder gar Quatsch erzählt? Auch ich bin nämlich schon eher müde um die Zeit^^
 

Stelufl

Mitglied
Das heißt wenn ich in irgendeiner Instanz
Code:
private String hallo = "Danke hdi fuer den tollen Post";
schreibe und in einer anderen Klasse, vllt. sogar in einem anderen Package oder Projekt, aber noch in der gleichen JVM den gleichen Code ausführe, dann greift er intern auf den bestehenden String zurück, anstatt einen neuen zu bilden? (Vorausgesetzt beide Instanzen sind offen)
 

hdi

Top Contributor
Innerhalb einer einzelnen VM, ja. Nur nicht VM-übergreifend.

[edit]Achso, was man dazu noch sagen sollte: Das ganze mit dem String Constant Pool funktioniert nur, da Strings Immutable sind, d.h. unveränderlich. Es gibt zwar diverse (scheinbar) manipulative Methode in der Klasse String, aber die returnen immer einen neuen String. D.h. wenn ein String einmal angelegt ist, kann man seinen Wert nicht mehr ändern. Wäre das nicht so, wäre diese Sache mit geteilten Referenzen ja fatal: Änderung über eine String-Variable x hätten dann ja auch einen Effekt auf jede andere Variable, der diese Referenz zugewiesen wurde. Das nur zum Verständnis, nur wegen der Immutable-Eigenschaft ist der Pool möglich (bzw. für den Pool wurde die Eigenschaft eingeführt).[/edit]
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Screenshots machen und zwar viele und speichern Java Basics - Anfänger-Themen 12
H So viele Fehlermeldungen, dass ich nicht weiß wo das Problem ist. Java Basics - Anfänger-Themen 6
J Problem mit einer Methode, die beliebig viele Objekte in Array speichern soll Java Basics - Anfänger-Themen 6
s_1895 zu viele Zeilen in der Main Methode Java Basics - Anfänger-Themen 4
P Methode die ausgibt wie viele Primzahlen es zwischen 2 und n gibt Java Basics - Anfänger-Themen 10
P Nutzer entscheiden lassen, wie viele Zahlen dieser in ein Array eingeben möchte. Java Basics - Anfänger-Themen 6
S Hilfe : Unendlich viele Zufallszahlen erstellen? Java Basics - Anfänger-Themen 8
I Wie viele 1 an Bits hat die Zahl x? Java Basics - Anfänger-Themen 5
R Zu viele leere Parameter Java Basics - Anfänger-Themen 8
T Variablen Beliebig viele Arrays in Schleife erstellen Java Basics - Anfänger-Themen 1
M Aufgabe: Eine Klasse und viele Untermethoden Java Basics - Anfänger-Themen 30
D Klassen Doppelt so viele Elemente in Arraylist ? Java Basics - Anfänger-Themen 4
D zu viele MySQL Connections Java Basics - Anfänger-Themen 18
F Threads ftp4j, viele Dateien upload Java Basics - Anfänger-Themen 5
L Viele Fragen zu den Grundlagen Java Basics - Anfänger-Themen 5
B Beliebig viele Rechtecke erzeugen Java Basics - Anfänger-Themen 5
N Beliebig viele parameter Java Basics - Anfänger-Themen 3
D Viele grafische unterschiede von Windows xp zu Windows 7 Java Basics - Anfänger-Themen 3
T unterschiedlich viele parameter übergeben Java Basics - Anfänger-Themen 5
T Zu viele Fenster - HILFE! Java Basics - Anfänger-Themen 5
Prafy Beliebig viele Arrays erstellen? Java Basics - Anfänger-Themen 2
J Methoden Beliebig viele Objekt-Eingabeparameter im Konstruktor Java Basics - Anfänger-Themen 6
T viele "kleine" Fragen... Java Basics - Anfänger-Themen 3
M Zu viele Verkettungen von Klassen Java Basics - Anfänger-Themen 4
G Erste Schritte Wie viele Montage gab es? Java Basics - Anfänger-Themen 14
M Input/Output Viele short aus Datei lesen und von Little Endian zu Big Endian umwandeln Java Basics - Anfänger-Themen 12
El_Lobo Methoden Zu viele Getter- und Settermethoden - geht das einfacher? Java Basics - Anfänger-Themen 3
L buffered reader produziert zu viele und seltsame zeichen Java Basics - Anfänger-Themen 2
D Erste Schritte Viele Objekte einer Klasse "verwalten" Java Basics - Anfänger-Themen 17
T Beliebig viele Werte in Array zwischenspeichern Java Basics - Anfänger-Themen 15
S Viele Fragen von einem Anfänger in Java Java Basics - Anfänger-Themen 2
F Viele Controller-Klassen Java Basics - Anfänger-Themen 5
P Datentypen extrem viele Fehler nur irgendwie seh ich den Grund ned... Java Basics - Anfänger-Themen 3
M Viele GUI-Variablen Java Basics - Anfänger-Themen 4
O Wie kann man das einfach lösen? (dynamisch viele Attribute) Java Basics - Anfänger-Themen 6
U JTable viele möglichkeiten, keine Lösung Java Basics - Anfänger-Themen 5
H Reflexion: Eine Methode, beliebig viele Parameter (Java 1.4.2) Java Basics - Anfänger-Themen 8
M Viele verschachtelte Schleifen Java Basics - Anfänger-Themen 14
Avalarion Erschaffung eines Shadowrun Charaktergenerators - Viele, Viele Fragen! Java Basics - Anfänger-Themen 6
S Viele Konstanten, EnumSet? Java Basics - Anfänger-Themen 3
S Stilfrage: Neue Klasse wenn es in einer Klasse zu viele Methoden gibt? Java Basics - Anfänger-Themen 14
Kasu So viele "_ " ausgeben, wie ein String lang ist Java Basics - Anfänger-Themen 4
I viele Dateinamen in ein String-Array mit File().list() Java Basics - Anfänger-Themen 4
mwildam Textfile lesen und schreiben - so viele Möglichkeiten Java Basics - Anfänger-Themen 5
U Zu viele werte in einer klasse Java Basics - Anfänger-Themen 4
K Viele Fragen eines Anfängers-Fließkommazahlen/Typenwandlung Java Basics - Anfänger-Themen 5
W Viele Objekte mit einem Konstrukor erzeugen Java Basics - Anfänger-Themen 10
R einfaches Programm, viele Probleme Java Basics - Anfänger-Themen 29
G viele zahlen mit wenig code Java Basics - Anfänger-Themen 4
X 1 MySQL-Verbindung und viele Threads Java Basics - Anfänger-Themen 4
E Viele Fragen Java Basics - Anfänger-Themen 8
J viele Objekte erzeugen Java Basics - Anfänger-Themen 21
J Große *.Text Datei zum verschicken in viele kleine Java Basics - Anfänger-Themen 7
O viele Name mit jeweils zugehörigen Status in .txt Speichern Java Basics - Anfänger-Themen 16
K ResultSet: Wie viele Rows beinhaltet es? Java Basics - Anfänger-Themen 6
X Viele Komponenten automatisch erzeugen Java Basics - Anfänger-Themen 2
C zu viele paint()'s. Java Basics - Anfänger-Themen 6
M Viele Textfelder auslesen Java Basics - Anfänger-Themen 3
P x-viele Variablen anlegen Java Basics - Anfänger-Themen 2
F Mit der Zahl n n-viele Arrays erstellen ?! Java Basics - Anfänger-Themen 4
KogoroMori21 Objektvariablen, Klassenvariablen, Instanzvariablen Java Basics - Anfänger-Themen 1
S Instanzvariablen vom Typ einer Klasse definieren Java Basics - Anfänger-Themen 12
L Instanzvariablen, Veerbung, Konstruktor Java Basics - Anfänger-Themen 32
D Setter/Getter für Instanzvariablen praktisch? Java Basics - Anfänger-Themen 19
H Vererbung mit private instanzvariablen Java Basics - Anfänger-Themen 9
B Methoden Nutzen der Instanzvariablen in Klassenmethoden Java Basics - Anfänger-Themen 1
G Klassenvariablen & Instanzvariablen Java Basics - Anfänger-Themen 4
N Instanzvariablen als private... Java Basics - Anfänger-Themen 2
H Klassen Konstruktor Parameter als Instanzvariablen zwischen speichern... Java Basics - Anfänger-Themen 11
H Klassen Von Instanzvariablen auf Instanz schließen Java Basics - Anfänger-Themen 21
J Klassen Ein Problem mit den Instanzvariablen Java Basics - Anfänger-Themen 13
S Instanzvariablen Java Basics - Anfänger-Themen 3
F wie oft werden Instanzvariablen genutzt Java Basics - Anfänger-Themen 14
J Variablen Aktualisieren von Instanzvariablen Java Basics - Anfänger-Themen 14
C Variablen Wann werden Instanzvariablen initalisiert? Java Basics - Anfänger-Themen 10
P Instanzvariablen mögliche Werte zuweisen Java Basics - Anfänger-Themen 6
R Vererbung Bitte um Erklärung - Instanzvariablen Java Basics - Anfänger-Themen 8
Luk10 Ändern von Instanzvariablen Java Basics - Anfänger-Themen 2
M fehler bei instanzvariablen deklaration?? Java Basics - Anfänger-Themen 6
J Instanzvariablen - Lokale Variablen - warum der Unterschied? Java Basics - Anfänger-Themen 5
Luk10 Vererben von private instanzvariablen Java Basics - Anfänger-Themen 20
Q Instanzvariablen implementieren - grundlegende Probleme Java Basics - Anfänger-Themen 3
S Zugriffe über Private Instanzvariablen Java Basics - Anfänger-Themen 3
F Zugriff auf Instanzvariablen, Frage zum guten Stil Java Basics - Anfänger-Themen 2
B Instanzvariablen private? Java Basics - Anfänger-Themen 5
D Fehler beim Aufrufen von Instanzvariablen Java Basics - Anfänger-Themen 5
7 Lokale Variablen, Klassenvariablen, Instanzvariablen Java Basics - Anfänger-Themen 15
G Klassen- und Instanzvariablen / Klassen- und Instanzmethode Java Basics - Anfänger-Themen 8
P Was sind Instanzvariablen? Java Basics - Anfänger-Themen 5
L Redundanz mit Array vermeiden. Java Basics - Anfänger-Themen 42
A Wiederholte Ausgabe vermeiden Java Basics - Anfänger-Themen 16
S java.nio.file.FileSystemException bei Dateizugriff vermeiden Java Basics - Anfänger-Themen 7
I Input/Output 3 Werte in Datei schreiben, duplikate vermeiden Java Basics - Anfänger-Themen 4
T doppelten Code vermeiden Java Basics - Anfänger-Themen 1
D Wie "unchecked cast" hier vermeiden? Java Basics - Anfänger-Themen 2
D Bei eingeben von Zahlen den Zeilensprung vermeiden Java Basics - Anfänger-Themen 3
Haave EAN-13-Prüfziffer: Vermeiden von Eingaben mit mehr/weniger als 12 Ziffern Java Basics - Anfänger-Themen 3
C Arrays vermeiden?? Java Basics - Anfänger-Themen 13
M Cast vermeiden Java Basics - Anfänger-Themen 11
B Wie Code-Redundanz vermeiden? Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben