Das Anlegen von Objekt-Instanzen...

Status
Nicht offen für weitere Antworten.

foskaty

Mitglied
Hallo.

Wenn ich ein Objekt anlegen möchte, ist schwerlich um "new" herumzukommen.

Wenn ich aber ein zwischenzeitlich nicht mehr benötigtes Objekt bzw. den von ihm
belegten Speicher aufheben will, damit ich beim nächsten Bedarf eines neuen Ob-
jekts nicht erneut "new" aufrufen muß, sondern einen von mir verwalteten Pool
von abgelegten Objekten bediene, komme ich um ein verwaltendes Objekt wohl
nicht herum. Entweder speichere ich eine Liste von alten Objekten oder aber ich
arbeite mit "weak references" oder ähnlichem. (Ein Observer-Pattern böte sich an.)

Ich würde gern unterhalb von "new" einen Weg implementieren, sodaß ein An-
wender der Klasse immer "new" aufruft, ohne zu realisieren, daß manchmal
Objekte aus meinem Pool, manchmal vom System geliefert werden.

Kennt jemand noch einen eleganteren Weg? Gibt es da einen Kniff?

Gruß,
=OF=
 
C

CoolHour

Gast
foskaty hat gesagt.:
Hallo.

Wenn ich ein Objekt anlegen möchte, ist schwerlich um "new" herumzukommen.

Wenn ich aber ein zwischenzeitlich nicht mehr benötigtes Objekt bzw. den von ihm
belegten Speicher aufheben will, damit ich beim nächsten Bedarf eines neuen Ob-
jekts nicht erneut "new" aufrufen muß, sondern einen von mir verwalteten Pool
von abgelegten Objekten bediene, komme ich um ein verwaltendes Objekt wohl
nicht herum. Entweder speichere ich eine Liste von alten Objekten oder aber ich
arbeite mit "weak references" oder ähnlichem. (Ein Observer-Pattern böte sich an.)

Ich würde gern unterhalb von "new" einen Weg implementieren, sodaß ein An-
wender der Klasse immer "new" aufruft, ohne zu realisieren, daß manchmal
Objekte aus meinem Pool, manchmal vom System geliefert werden.

Kennt jemand noch einen eleganteren Weg? Gibt es da einen Kniff?

Gruß,
=OF=

Hi!

Soweit ich weiß, macht das der Garbage Collector schon. Es gibt ein Pool, in dem er noch Objekte hält und diese ggf. wiedernutzt.
Das sinnvollste Pattern ist eine Factory. Sprich eine Klasse, die dir die gewünschten Objekte zurückliefert. Diese entwscheidet dann, ob neue angelegt oder alte genutzt werden.

Gruß CoolHour
http://www.java-studio.de
 

foskaty

Mitglied
CoolHour hat gesagt.:
Soweit ich weiß, macht das der Garbage Collector schon. Es gibt ein Pool, in dem er noch Objekte hält und diese ggf. wiedernutzt. Das sinnvollste Pattern ist eine Factory. Sprich eine Klasse, die dir die gewünschten Objekte zurückliefert. Diese entwscheidet dann, ob neue angelegt oder alte genutzt werden.

Hm... wenn ich dem Garbage Collector das überlasse, bin ich nicht immer sicher, daß der Objekt-Speicher aus dem Pool kommt, nicht wahr? Ein guter Garbage Collector wird auch über die zur Verfügung stehenden Resourcen beeinflußt, d.h. hat das System asthmatisch wenig Speicher, wird der beschriebene interne Objekt-Pool recht mager ausfallen und als Folge werden viele meiner Objkte von 0 an aufgebaut. Gerade im Umfeld von J2ME-Umgebungen dürfte jener Pool nicht sehr groß sein... Aber die Idee hat was, ohne Frage.

Eine "Factory" hatte ich auch schon im Sinn, nur will ich, daß Nutzer des Codes einfach ein "new" aufrufen können, um sich ein Objekt anzulegen. Wenn ich es richtig verstehe - bin ein pattern-unerfahrener C-Popler - will die Factory aber eine eigene Methode zum "Liefern" der Objekte etablieren. Genau das käme aber nicht in Frage, die Schnittstelle ist extern vorgegeben... die "lose" Kopplung zwischen "Observer" und "Observee" paßt schon besser, hat allerdings auch so seine Nachteile.

Wie man's macht, macht man's falsch. :wink:

Gruß & Dank,
=OF=
 

Tobias

Top Contributor
Wenn es dir um die Geschwindigkeit beim Bereitstellen von Objekten geht, könntest du es mit Lazy Initialization versuchen - du stellst ein Objekt zur Verfügung, initialisiert aber nur die Daten von Anfang an, bei denen du dir sicher bist, dass sie gebraucht werden. Weniger häufig benutzte Daten werden erst bei Anforderung geladen - das ergibt zwar u.U. mehrere kurze Wartezeiten, aber das ist meist besser als eine ewig lange...

Ist ein völlig anderer Ansatz als das Pooling, aber vielleicht ist es ja das, was du suchst.

mpG
Tobias
 

foskaty

Mitglied
Tobias hat gesagt.:
Wenn es dir um die Geschwindigkeit beim Bereitstellen von Objekten geht, könntest du es mit Lazy Initialization versuchen - du stellst ein Objekt zur Verfügung, initialisiert aber nur die Daten von Anfang an, bei denen du dir sicher bist, dass sie gebraucht werden.

Auch eine interessante Idee, danke! :) Das Problem ist, daß ich hochfrequent Objekte erzeugen und entsorgen muß, weil in diesen Viechern Daten von "oben" nach "unten" durch ein Kommunikationspaket transportiert werden müssen. Mal ganz abgesehen davon, daß ich nicht genau sagen kann, was wann gesetzt wird - das entscheidet die Anwendung - , die benötigte Geschwindigkeit der Datenpakete im Rahmen des Problems ist bzw. kann der "show stopper" werden. Und da das Aufbauen dieser Objekte eben einer der größten Laufzeit-Fresser ist, hatte ich zuerst daran drehen wollen...

Gruß,
=OF=
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
V Neues Objekt anlegen, welcher Typ? Allgemeine Java-Themen 2
Noahscript Konto anlegen um JDK herunterzuladen? Was soll das? Allgemeine Java-Themen 1
P Eclipse Projekt anlegen macht Problem Allgemeine Java-Themen 1
F JTree: Nodes dynamisch anlegen via LinkedHashMap Allgemeine Java-Themen 2
A Datenstrukturen richtig anlegen/laufzeitanalyse Allgemeine Java-Themen 10
M Klassen Systemprozess anlegen Allgemeine Java-Themen 3
B Java FTP (common net - user anlegen) Allgemeine Java-Themen 2
T ArrayList<double[]> persitent anlegen Allgemeine Java-Themen 7
H Ordnerstruktur anlegen Allgemeine Java-Themen 10
G Ordnerstruktur anlegen Allgemeine Java-Themen 2
H2SO3- dynamisches anlegen der dimensionaltität eines arrays Allgemeine Java-Themen 6
S Problem beim Anlegen eines JDialogs! Allgemeine Java-Themen 4
MQue Ordner anlegen Allgemeine Java-Themen 7
M JFileChooser: Ordner anlegen Allgemeine Java-Themen 3
C Temporäre Datein anlegen Allgemeine Java-Themen 2
E Problem beim Anlegen einer Datei Allgemeine Java-Themen 4
B Datenbank anlegen Allgemeine Java-Themen 10
G FileOpenDialog Pfad anlegen? Allgemeine Java-Themen 2
S In .jar File Verzeichnisse anlegen Allgemeine Java-Themen 2
D Datei beim ersten Programmstart anlegen? Allgemeine Java-Themen 3
S Temporäres Verzeichnis anlegen? Allgemeine Java-Themen 4
N Lwjgl 3d Objekt wird schmaler, wenn es sich dreht Allgemeine Java-Themen 0
B Ein Objekt einer Klasse mehreren anderen Klassen zur Verfügung stellen? Allgemeine Java-Themen 6
T Objekt Array Aufgabe mit Busdatenbank Allgemeine Java-Themen 2
Maxi-JOO Klassen Dummy Objekt in anderen Constructor übergeben Allgemeine Java-Themen 5
el_niiinho13 Objekt auf der Konsole ausgeben lassen Allgemeine Java-Themen 8
d.lumpi Aus Einer Klasse auf ein Objekt einer anderen Klasse Zugreifen Allgemeine Java-Themen 1
A Objekt aus anderen Objekten machen Allgemeine Java-Themen 8
SaftigMelo In einem Winkel Objekt bewegen Allgemeine Java-Themen 2
E Datentypen Wie kann ich die Längen der unterschiedlichen Ebenen aus einem Objekt lesen von dem ich weiß, dass es ein mehrdimensionaler Array ist? Allgemeine Java-Themen 3
H Objekt speichern und laden Allgemeine Java-Themen 1
H Objekt speichern und laden Allgemeine Java-Themen 1
J Objekt in Bytestream umwandeln Allgemeine Java-Themen 12
J Wie kann ich von Vornherrein einen Fokus auf ein Objekt entfernen? Allgemeine Java-Themen 3
J Information von getSource() Objekt auslesen Allgemeine Java-Themen 1
Drachenbauer Wie stelle ich fest, ob ein Objekt in meinem Array vorkommt? Allgemeine Java-Themen 5
S Variable als Objekt Name Allgemeine Java-Themen 3
D Input/Output Zwischen zwei ID-Räumen unterscheiden und Objekt löschen Allgemeine Java-Themen 16
L Objekt aus Objekt-array "löschen" Allgemeine Java-Themen 2
T Objekt mit String und Int aus TxT Datei erstellen Allgemeine Java-Themen 23
T Objekt in Array packen Allgemeine Java-Themen 6
K Methodenaufruf mit String / String zu Objekt konvertieren Allgemeine Java-Themen 8
S Neues Objekt darstellen Allgemeine Java-Themen 4
J Best Practice Objekt an alle Klassen verteilen ( Discord Bot ) Allgemeine Java-Themen 7
D Objekt-Suche mit mehreren optionalen Parametern Allgemeine Java-Themen 6
M Klassen Objekt weiter geben Allgemeine Java-Themen 1
B Klassen Objekt erzeugen und Konstruktor aufrufen - Welche Lösung ist besser? Allgemeine Java-Themen 2
L Variablen Eigenes Objekt wie z.B. einen Integer zuweisen Allgemeine Java-Themen 3
D Konstruktor - jedes Objekt einzeln erzeugen - alternative? Allgemeine Java-Themen 8
S Applet Überprüfen ob ein Objekt angeklickt wurde Allgemeine Java-Themen 2
RalleYTN 3D Objekt Translation basierend auf Rotation (Probleme mit Z Rotation) Allgemeine Java-Themen 0
B Von String zu <Objekt> ||Speichern/Laden Allgemeine Java-Themen 17
G Neues Objekt aus List<JsonObject> mit Stream Allgemeine Java-Themen 4
P Threads Objekt im Konstruktor anders wie im Run()-Block Allgemeine Java-Themen 10
R Objekt funktioniert nicht auf iOS Allgemeine Java-Themen 15
K Textdatei als Objekt Allgemeine Java-Themen 4
Viktim Classenname zu Objekt Allgemeine Java-Themen 4
P Entity Objekt Methoden vs Service methoden Allgemeine Java-Themen 2
D Datentypen Klassenattribut aus Objekt in generischer Liste Allgemeine Java-Themen 15
O Klassen Bruch im gleichen Objekt Speichern Allgemeine Java-Themen 1
P Liste zu Objekt umwandeln Allgemeine Java-Themen 4
C Liste checken auf MINDESTENS ein Objekt | Bukkit Allgemeine Java-Themen 3
K Best Practice JFrame Objekt allgemein zugänglich machen Allgemeine Java-Themen 8
B ArrayList in ein Objekt legen Allgemeine Java-Themen 1
D Objekt entlang eines Funktionsgraphens bewegen Allgemeine Java-Themen 6
M Objekt serialisieren/deserialisieren und in einer SQLite-Datenbank speichern Allgemeine Java-Themen 3
D Java Objekt als Service in Runtime registrieren Allgemeine Java-Themen 1
S Interaktion mit einer website (website als Objekt?) Allgemeine Java-Themen 3
J OOP Überwachen, ob ein Objekt erzeugt wird Allgemeine Java-Themen 9
S Byte Array welches in Laufzeit aufgelöst wird // Objekt Array Allgemeine Java-Themen 3
Thallius Hash über serialisiertes Objekt? Allgemeine Java-Themen 3
Developer_X Input/Output Serialisiertes Objekt speichern und laden Allgemeine Java-Themen 1
C Generics Objekt in ArrayList Allgemeine Java-Themen 2
L Klassen Konstruktor soll Objekt anderer Klasse erzeugen Allgemeine Java-Themen 2
F Neues Objekt aus .CSV definition Allgemeine Java-Themen 3
K Methoden Objekt wird nicht erkannt Allgemeine Java-Themen 11
P Objekt mit verschiedenen Datentypen Allgemeine Java-Themen 5
T Objekt kontaktiert seinen "erzeuger" Allgemeine Java-Themen 5
S Objekt orientierte Programmierung Allgemeine Java-Themen 7
C Objekt Datenverlust nach Methodenaufruf Allgemeine Java-Themen 9
H JavaFX Von einer Methode auf stage-Objekt zugreifen Allgemeine Java-Themen 3
T WeakReference/PhantomReference: Mitbekommen WELCHES Objekt nun GC'ed wird Allgemeine Java-Themen 2
T Class-Objekt mit URLClassloader Allgemeine Java-Themen 7
P Konsoleneingabe übernehmen und Objekt instanzieren. Allgemeine Java-Themen 5
E Auf Java-Objekt aus anderer Instanz zugreifen Allgemeine Java-Themen 26
L Klassen Polymorphie:2 Attribute gleichen Namens in einem Objekt Allgemeine Java-Themen 6
P Objekt Array in Datei Speichern Allgemeine Java-Themen 3
F Dynamisch ein Objekt einer bestimmten Subklasse erstellen Allgemeine Java-Themen 7
D Player Objekt - Frame über Server anzeigen lassen. Allgemeine Java-Themen 3
V Objekt löschen Allgemeine Java-Themen 7
A OOP Wie auf Objekt der Superklasse zugreifen? Allgemeine Java-Themen 6
S Datei in File-Objekt mit UTF-8 einlesen Allgemeine Java-Themen 2
M neues Objekt speichern, nicht Referenz Allgemeine Java-Themen 10
B synchronisierter zugriff auf Objekt Allgemeine Java-Themen 6
F Objekt einer Datei verschieben, aber Verzeichnispfad fehlt Allgemeine Java-Themen 6
C Objekt Typ herausfinden Allgemeine Java-Themen 5
E Objekt beim Erzeugen in ArrayList Allgemeine Java-Themen 9
M Objekt prüfen auf null ->Invocation Target Exception??? Allgemeine Java-Themen 2
M Objekt aus Liste in Liste suchen/löschen Allgemeine Java-Themen 6
D Eigenen Objekt Pool Allgemeine Java-Themen 15

Ähnliche Java Themen

Neue Themen


Oben