Singleton mit Parameter

Status
Nicht offen für weitere Antworten.

Iron Monkey

Bekanntes Mitglied
Hi an alle!

Ist diese Singleton mit Parameter sinnvoll?

Wenn die Methode "getInstance" einmal aufgerufen wurde, dann ist die Klasse "KlickAnzahlStatistikEntry" auch nur einmal erzeugt worden. Wenn ich aber ein zweitens mal die Methode "getInstance" aufrufe, dann muss die Referenzvariable der Klasse "KlickAnzahlStatistikEntry" gelöscht werden, um die Parameter-Daten neu einzutragen.
So sehe ich irgendwie, dass es durch die Erzeugung der Klasse nicht zuviel Speicher verbraucht wird und die GC kann dann die gelöschten Referenzvariablen aufräumen.

Java:
	  public static KlickAnzahlStatistikEntry getInstance( int knz, String name )
	  {
		  if (mySingelton != null)
			  mySingelton = null;
		  
		  if (mySingelton == null)
			  mySingelton = new KlickAnzahlStatistikEntry( knz, name );

		  return mySingelton;
	  }

Gruß
Iron Monkey
 
M

maki

Gast
Das ist doch kein Fall für ein Singleton (was sowieso nur selten sinnvoll ist, meist nur Design das überarbeitet gehört),
 
B

bygones

Gast
ein Singleton (with big S *g) heisst du hast in deiner VM nur eine Instanz...

du willst ja immer eine neue erzeugen, ergo kein Singleton

wenn dein vorher geschaffenes Objekt keine weitere Referenzen hat bzw jemand es haelt (ihr versteht schon), dann nimmts der GC schon mit
 

Iron Monkey

Bekanntes Mitglied
OK, was passiert dann, wenn ich so schreibe:

Java:
public final static KlickAnzahlStatistikEntry[] entry = {
		KlickAnzahlStatistikEntry.getInstance( 1, TEXT1 ),
		KlickAnzahlStatistikEntry.getInstance( 2, TEXT2 ),
                ...
		KlickAnzahlStatistikEntry.getInstance( 98, TEXT98 )
	};


In diesem Fall wird es doch viel zuviel Speicher verbraucht als das obere Beispiel, da 98 Klassen neu erzeugt wurden und zu dem oberen Beispiel, wenn ich einen bestimmten Index von entry-Array auswähle, dann wird die Klasse nur einmal erzeugt oder irre ich mich gerade?

Java:
public final static KlickAnzahlStatistikEntry[] entry = {
		new KlickAnzahlStatistikEntry( 1, TEXT1 ),
		new KlickAnzahlStatistikEntry( 2, TEXT2 ),
                ...
		new KlickAnzahlStatistikEntry( 98, TEXT98 )
	};

Gruß
Iron Monkey
 
M

maki

Gast
Du redest von Speicher-"verbrauch", hast du ein Problem mit dem Speicher, hast du gemessen wieviel belegt wird, oder gibt es gar kein Problem? ;)
 

Iron Monkey

Bekanntes Mitglied
Du redest von Speicher-"verbrauch", hast du ein Problem mit dem Speicher, hast du gemessen wieviel belegt wird, oder gibt es gar kein Problem? ;)

Richtig, ich rede von Speicher-Verbrauch! ;) Nein, habe keine Problem mit dem Speicher, aber man muss auch über den Speicher mitdenken, wenn man mit der selben Anwendung immer mehr und größer aufbaut. Ich kann ja nicht immer so denken:"Ach egal, GC macht das schon! Der räumt immer und jederzeit alles auf oder so in der Art!"! ;)

Gruß
Iron Monkey
 

objcler

Aktives Mitglied
Donald Knuth made the following statement on optimization:

* "We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil."[2]
 
M

maki

Gast
Richtig, ich rede von Speicher-Verbrauch! ;) Nein, habe keine Problem mit dem Speicher, aber man muss auch über den Speicher mitdenken, wenn man mit der selben Anwendung immer mehr und größer aufbaut. Ich kann ja nicht immer so denken:"Ach egal, GC macht das schon! Der räumt immer und jederzeit alles auf oder so in der Art!"! ;)
Schreibe lieber sauberen Code anstatt dir den Kopf über Probleme zu zerbrechen die gar keine sind ;)
Soll heissen: Vergiss das Singleton Muster wieder ganz schnell.
In OO Sprachen sollte man sich davor scheuen Objekte zu erstellen.

Speicher, Performance etc. sind nebensächlich (für die meisten Anwendungen), wenn dein Programm zuviel Speicher belegt oder zu langsam läuft, kannst du das immer noch ändern, falls es wirklich soweit kommen sollte.
 

Iron Monkey

Bekanntes Mitglied
Aber das stimmt doch!
Du musst nur dafür sorgen, dass nicht mehr gebrauchte Objekte auch nicht mehr referenziert werden. Der Rest geht automatisch.

Also ist es nicht schlimm wegen des Speichers zu dem unteren Beispiel?

Java:
public final static KlickAnzahlStatistikEntry[] entry = {
        new KlickAnzahlStatistikEntry( 1, TEXT1 ),
        new KlickAnzahlStatistikEntry( 2, TEXT2 ),
                ...
        new KlickAnzahlStatistikEntry( 98, TEXT98 )
    };

Gruß
Iron Monkey
 
M

maki

Gast
Nein, der Speicher ist nicht das Problem, überhaupt nicht.
Ein Problem ist wohl eher dass du mit "gloablen" Variablen arbeitest.
 

faetzminator

Gesperrter Benutzer
Falls du viele Objekte oft nicht brauchst, könntest du eine Map<..., KlickAnzahlStatistikEntry> machen, mit welcher du prüfst, ob das jeweilige Objekt bereits vorhanden ist, und wenn nicht, es erstellst. Zusätzlich kannst du dort die Referenzen natürlich wieder entfernen, falls du sie nicht mehr benötigst.
 

Iron Monkey

Bekanntes Mitglied
Nein, der Speicher ist nicht das Problem, überhaupt nicht.
Ein Problem ist wohl eher dass du mit "gloablen" Variablen arbeitest.

OPS, es sollte eigentlich private stehen! :D

@faetzminator
Das ist auch eine gute Idee! :)


An euch alle, danke für alles! Das Thema ist abgeschlossen! :)

Gruß
Iron Monkey
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
EinNickname9 Best Practice Singleton und Singleton mit Instanz zu anderer Klasse -Pattern Allgemeine Java-Themen 30
Neoline Klassen Singleton Klasse buchmanager Allgemeine Java-Themen 19
J Singleton Allgemeine Java-Themen 5
Z deserialize singleton Allgemeine Java-Themen 9
A Singleton threadsafe Allgemeine Java-Themen 8
S Singleton Instanz löschen Allgemeine Java-Themen 5
A Datei als Object einlesen und das Object als Singleton instance setzen. Allgemeine Java-Themen 13
T ActionListener und Singleton Allgemeine Java-Themen 15
S Singleton Entwurfsmuster Allgemeine Java-Themen 20
T So eine Art Singleton-Factory? Allgemeine Java-Themen 3
S Singleton-Klasse und ThreadLocal-Klasse von abstrakter Klasse ableiten? Allgemeine Java-Themen 2
S Singleton hier sinnvol? Allgemeine Java-Themen 20
T Zugriff auf Singleton verkürzen - Namespaces?? Allgemeine Java-Themen 20
B Volatile Frage: Reicht es nur den Singleton als volatile zu deklarieren? Allgemeine Java-Themen 4
G Singleton Frage: Allgemeine Java-Themen 17
M Singleton und Vererbung? Allgemeine Java-Themen 45
R Wo initilisiere ich eine Liste in einem Singleton? Allgemeine Java-Themen 2
M Java Garbage Collector Frage (Singleton Pattern) Allgemeine Java-Themen 13
B Generisches Singleton implementieren Allgemeine Java-Themen 12
H Singleton und MultiThreading [erledigt] Allgemeine Java-Themen 3
S Singleton Pattern mit Generics Allgemeine Java-Themen 4
P SingleTon Allgemeine Java-Themen 5
M zwei Threads - ein singleton-Objekt Allgemeine Java-Themen 3
RaoulDuke Agent als Singleton Thread Allgemeine Java-Themen 7
S singleton vs. static Allgemeine Java-Themen 7
P Singleton vs static Allgemeine Java-Themen 19
K Singleton vererben Allgemeine Java-Themen 15
E Singleton vererben Allgemeine Java-Themen 10
E Frage zu Singleton Allgemeine Java-Themen 22
D Design Pattern: Singleton Allgemeine Java-Themen 4
K Sequenzdiagramm für Singleton-Muster Allgemeine Java-Themen 5
F KI / Machine Learning Parameter verschachtelte for Schleifen Allgemeine Java-Themen 2
F KI / Machine Learning Parameter verschachtelte for Schleifen Allgemeine Java-Themen 1
8u3631984 Funktions Parameter mit Lombok "NonNull" annotieren wird in Jacococ Testcoverage nicht herausgefiltert Allgemeine Java-Themen 3
JavaJüngling beliebige Collection die Comperable Elemente enthält als Parameter Allgemeine Java-Themen 37
M Datensatz auf ein bestimmten Parameter einzugrenzen Allgemeine Java-Themen 11
B JAX - RS.... Multiple parameter application/x-www-form-urlencoded.... Allgemeine Java-Themen 6
B Parameter Konstruktor plus rechnen Allgemeine Java-Themen 6
L Die abzuleitende Klasse als Parameter übergeben Allgemeine Java-Themen 4
W Haben Konstruktoren in Java eigentlich immer mindestens einen Parameter? Allgemeine Java-Themen 4
I Array Parameter mit 2 Klassen - NullPointerException Allgemeine Java-Themen 3
F URI mit Parameter klappt nicht Allgemeine Java-Themen 1
H Aufruf eines Web Service anhand übergebenen Parameter Allgemeine Java-Themen 2
temi best practice: Parameter überprüfen, wo? Allgemeine Java-Themen 9
S Parametrisierte jUnit 5-Tests mit eigenen Datentypen/Klassen-Objekten als Test-Parameter Allgemeine Java-Themen 0
MiMa If-Abfrage mit Parameter Allgemeine Java-Themen 8
I Javaaufruf aus Batch inkl. Parameter (Adminrechte) Allgemeine Java-Themen 2
P Java https proxy (-Dhttps.proxyHost) Start-Parameter funktioniert nicht? Allgemeine Java-Themen 2
Neumi5694 Methoden Generic: Rückgabetyp als Class-Parameter übergeben Allgemeine Java-Themen 3
K Java FX Zu startenden FXML-Controller per Parameter wählen Allgemeine Java-Themen 2
F Enum-werte als Methoden-Parameter übergeben Allgemeine Java-Themen 6
T Klassen Parameter weitergabe Allgemeine Java-Themen 1
C Überschreiben mit kontravariante Parameter Allgemeine Java-Themen 13
M Parameter auslesen im Servlet Allgemeine Java-Themen 0
perlenfischer1984 Wann ist ein Parameter Check sinnvoll Allgemeine Java-Themen 7
Neumi5694 Vererbung Parameter muss 2 Bedingungen erfüllen Allgemeine Java-Themen 2
Sogomn Methode als Parameter? Allgemeine Java-Themen 3
T Parameter Allgemeine Java-Themen 6
R Parameter Adapter - Design Allgemeine Java-Themen 1
I Methode verallgemeinern (Methode als Parameter)? Allgemeine Java-Themen 10
F In OSX: Java-Programm über URI-Scheme aufrufen mit Parameter? Allgemeine Java-Themen 0
H Generics als Parameter Allgemeine Java-Themen 1
N [stream-api] Parameter pro Typ zählen Allgemeine Java-Themen 1
OnDemand Maximale Parameter Allgemeine Java-Themen 5
M final vor dem parameter eines Konstruktors Allgemeine Java-Themen 1
S Servlet, per URLConnection Mit String Http Parameter mitsenden Allgemeine Java-Themen 3
M Parameter-Datei einlesen (zeilenweise); Dateiintegrität Allgemeine Java-Themen 7
H JasperReport: Parameter befüllen Allgemeine Java-Themen 7
Joew0815 JList + JTableModel: Parameter der Tabelle übergeben Allgemeine Java-Themen 10
Y Applet/Html - Wie Java-Methode aufrufen, die einen Parameter erwartet? Allgemeine Java-Themen 3
G Polymorphie Funktion als Parameter Allgemeine Java-Themen 8
G Methoden Unterschiedliche viele Parameter Allgemeine Java-Themen 17
F Parameter im Link /jar-Aufruf Allgemeine Java-Themen 12
S OOP Designrichtlinie Parameter Prüfung Allgemeine Java-Themen 7
C char und char-Array als parameter übergeben Allgemeine Java-Themen 6
B Array Parameter Problem Allgemeine Java-Themen 3
C Reflektions, Benutzer soll Konstruktor auswählen und Parameter übergeben können Allgemeine Java-Themen 5
S Keytool: mögliche Werte für Parameter Allgemeine Java-Themen 4
H Externes Programm, Parameter Allgemeine Java-Themen 6
C Webservice: XML Parameter übergabe. Allgemeine Java-Themen 7
M Session-Parameter setzen? Allgemeine Java-Themen 10
P VM-Parameter -D... Allgemeine Java-Themen 3
V Wildcard aus Parameter in return type Allgemeine Java-Themen 2
O Collections Eigene Methodenzusicherung bei Collections als Parameter Allgemeine Java-Themen 2
W ScriptEngine + Wie Parameter übergeben bei Fukntion? Allgemeine Java-Themen 2
A Reflection Konstruktor Parameter Supertyp Allgemeine Java-Themen 2
F Parameter für Java Applikation per xml ins Meta-inf speichern? Allgemeine Java-Themen 3
J BlueJ Methode hat zu viele Parameter Allgemeine Java-Themen 6
R VM-Error - BadWindow (invalid Window parameter) Allgemeine Java-Themen 4
J Parameter an Java übergeben Allgemeine Java-Themen 10
S Neue Instanz eines Objekts erzeugen - Konstruktor erhaelt Parameter. Allgemeine Java-Themen 5
P VM Parameter und .jar Allgemeine Java-Themen 3
L Parameter-Objekte verändern oder nicht? Allgemeine Java-Themen 6
J Parameter absichtlich für außen verändern Allgemeine Java-Themen 4
A wie kann man Parameter an ein Task übergeben? Allgemeine Java-Themen 3
G setter und getter: Parameter Überprüfung Allgemeine Java-Themen 6
G JVM Parameter Allgemeine Java-Themen 7
G Parameter Bedeutung Allgemeine Java-Themen 4
W Properties-Klasse: mehrere Parameter-Belegungen übergeben? Allgemeine Java-Themen 2
J Unicode: cmd parameter (main args); exec params; filenames Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben