alle instanzen einer klasse löschen

skywalker

Aktives Mitglied
kann man in java alle instanzen einer klasse händisch löschen?

ich benötige ca. 1000 instanzen einer klasse temporär und möchte diese dann nachdem ich die verwendet hab gleich wieder löschen und nicht auf den garbage collector warten. geht das?
 

Noctarius

Top Contributor
Wenn du den Scope richtig setzt kümemrt sich der Garbage Collector schon darum, dass sauber aufgeräumt wird. Du hast nur dafür zu sorgen, dass alle Referenzen verschwunden sind.

Den Instanzen-Scope einfach immer so klein wie möglich halten und fertig.
 

Der Müde Joe

Top Contributor
Nein.
Man kann höchsten ein System.gc() machen, um den GC anzustossen (wobei das auch keine Garantie ist, das er läuft).

(In der Forensuche findet man bestimm schon x Threads darüber)
 

Volvagia

Top Contributor
Nein. Du kannst zwar den GC bitten, anfangen zu arbeiten, aber das ist kein Befehl. Laut FindBugs sollte man das auch nicht tun.

Explicit garbage collection; extremely dubious except in benchmarking code
Code explicitly invokes garbage collection. Except for specific use in benchmarking, this is very dubious.
In the past, situations where people have explicitly invoked the garbage collector in routines such as close or finalize methods has led to huge performance black holes. Garbage collection can be expensive. Any situation that forces hundreds or thousands of garbage collections will bring the machine to a crawl.

Wenn ich das richtig verstehe, soll der GC selbststänidg langsam nacheinander alles entfernen. Wofür braucht man eigendlich 1000 temponäre Instanzen?
 

Noctarius

Top Contributor
Och es kann schnell vorkommen, dass man 1000 temporäre Instanzen von etas braucht. Z.B. XML einlesen und Daten analysieren. Wenn ich die danach nicht mehr brauche sind sie temporär ^^

Und es stimmt, generell sind die GC Algos so gut, dass ein expliziter Aufruf des GC vermieden werden sollte.
 

skywalker

Aktives Mitglied
die 1000 einträge sollen nur einträge für einen buffer sein. wobei die anzahl der einträge variieren können.

jez hab ich eine klasse gemacht mit einem konstruktor der die einräge zusammenführt (z.b. ein eintrag= gelb, 20, 2.2, false)
und eine zweite klasse buffer wo verschiedene sortieralgorithmen für die einträge sind und die dann auch von einer ganz anderen klasse abgefragt wird ob eine bestimmte anzahl von einträgen erreicht wird und dann einen bestimmten eintrag zurückliefern soll...
 

Landei

Top Contributor
Da kommt mir das Flyweight Pattern in den Sinn.

Wenn du immer nur eine bestimmte Anzahl deiner Objekte brauchst, wäre auch Pooling eine Lösung: Du hältst eine Anzahl Objekte in einer Collection. Um sie zu benutzen, nimmt man sie aus der Collection heraus. Statt mit einem Konstruktor werden sie über eine Init-Methode initialisiert, und am Ende nicht gc'd, sondern für die Wiederverwendung vorbereitet, indem man sie wieder in die Collection packt.
 

skywalker

Aktives Mitglied
klasse 1 = buffer eintrag. ein eintrag besteht aus unterschiedlichen typen (z.b. string, long, double, long)

klasse 2 = speichert die einträge in einer liste. wie kann ich der klasse die den buffer darstellt die einträge übergeben ohne jedesmal eine new klasse1 zu machen. momentan gibt es in der klasse2 nämlich eine addToBuffer funktion die als parameter eine new klasse2(string, long, double,long) hat - ich möchte aber nicht immer eine neue klasse erzeugen - wegen performance bzw weils mir überhaupt seltsam vorkommt. und wenn ich da schon immer neue instanzen anlege möcht ich die dann wenn der buffer gefüllt ist sofort löschen.
 

Volvagia

Top Contributor
Du könntest eventuell für jedes Parameter eine ArrayList erstellen, und nur in einer Instanz speichern. Dann erspaarst du dir n - 1 Instanzen, ich weiß aber nicht ob das so einen großen Vorteil bringt.

Java:
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;

public class Klasse
{
	private final Lock PARM_0_LOCK = new ReentrantLock();
	private final Lock PARM_1_LOCK = new ReentrantLock();
	private final Lock PARM_2_LOCK = new ReentrantLock();

	private List<String> parm0List;
	private List<String> parm1List;
	private List<String> parm2List;
	
	public Klasse()
	{
		super();
		parm0List = new ArrayList<String>();
		parm1List = new ArrayList<String>();
		parm2List = new ArrayList<String>();
	}
	public void setParm0(String parm, int typ)
	{
		PARM_0_LOCK.lock();
		try
		{
			if(parm0List.size() < typ)
				parm0List.add(typ, parm);
			else
				parm0List.set(typ, parm);
		}
		finally
		{
			PARM_0_LOCK.unlock();
		}
	}
	public void setParm1(String parm, int typ)
	{
		PARM_1_LOCK.lock();
		try
		{
			if(parm1List.size() < typ)
				parm1List.add(typ, parm);
			else
				parm1List.set(typ, parm);
		}
		finally
		{
			PARM_1_LOCK.unlock();
		}
	}
	public void setParm2(String parm, int typ)
	{
		PARM_2_LOCK.lock();
		try
		{
			if(parm2List.size() < typ)
				parm2List.add(typ, parm);
			else
				parm2List.set(typ, parm);
		}
		finally
		{
			PARM_2_LOCK.unlock();
		}
	}
	
	public String getParm0(int typ)
	{
		return(parm0List.get(typ));
	}
	public String getParm1(int typ)
	{
		return(parm1List.get(typ));
	}
	public String getParm2(int typ)
	{
		return(parm2List.get(typ));
	}
}

(Vom Hirn in Eclipse)
 

skywalker

Aktives Mitglied
ja der buffer is so eine art stack - und wenn eine gewisse anzahl an einträgen im buffer steht soll damit mit einem eintrag der von allen aussortiert wird weitergearbeitet werden.
 

skywalker

Aktives Mitglied
wie meinst zufälliger?

in den buffer werden zb 1000 einträge geschrieben, ein eintrag wird dann aufgrund eines bestimmten kriteriums ausgewählt und mit dem weitergerechnet... wenn ich 1000 einträge im buffer hab, sortiert wurde und ich den einen eintrag habe, möchte ich alle 1000 einträge (was bis jetz 1000 neue klassen1 sind) löschen - ich möcht die klassen im speicher löschen, nicht den buffer leeren, oder referenzen auf die klasse löschen.
 

Noctarius

Top Contributor
Kannst du das Kriterium denn nicht als eine Art Filter direkt überprüfen? Müssen die Werte unbedingt zwischengespeichert sein?
 

skywalker

Aktives Mitglied
also ein eintrag in dem buffereintag is ein long wert.

zb. buffereitrag1 = (gelb, 12, 4.0, 234344)
zb. buffereintrag2 = (lila, 3,7.5, 12)
....

es soll schon gefiltert werden - und zwar der niedrigste longwert an der letzten stelle ist der gesuchte buffereintrag. also es geht ja eigentlich um die filterung.

momentan merk ich mir halt die einträge, wenn max_einträge da sind dann sortier ich nach dem longwert an letzter stelle und hol mir den eintrag mit dem niedrigsten longwert an letzter stelle (buffereintrag2), von dem ich dann den z.b zweiten wert brauch (3) um was anderes zu machen...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Alle Instanzen einer Klasse ansprechen Java Basics - Anfänger-Themen 4
G alle Instanzen einer Klasse serialisieren Java Basics - Anfänger-Themen 4
K Warum wird hier nur etwas in eine txt Datei geschrieben und nicht in alle drei (InputStream/OutputStream/Reader/Writer) Java Basics - Anfänger-Themen 1
H Nutzt Eclipse alle CPU-Threads beim Ausführen von Java-Programmen? Java Basics - Anfänger-Themen 4
B Alle Strings bis zu einer Maimallänge aufzählen, die Bedingung erfüllen Java Basics - Anfänger-Themen 13
D Apache HTTPClient für alle Fälle Java Basics - Anfänger-Themen 41
missy72 Methoden Alle rekusiven Aufrufe abbrechen Java Basics - Anfänger-Themen 21
S IntelliJ geht alle Klassen durch Java Basics - Anfänger-Themen 9
B Alle Zahlen finden, die 3 bestimmte Ziffern enthalten? Java Basics - Anfänger-Themen 9
K wie kann ich alle Attribute von dem Objekt(pagode) ausgeben lassen ? Java Basics - Anfänger-Themen 3
I Greenscreen, funktioniert nicht zu 100%... nicht alle Pixel werden geändert Java Basics - Anfänger-Themen 1
Butzibu Image Loader lädt nicht alle Bilder: Java Basics - Anfänger-Themen 4
sserio Wieso werden nicht alle Primzahlen bis 1000 in meine Liste gepackt ? Java Basics - Anfänger-Themen 8
E Select nimmt nicht alle Where /AND befehlen an Java Basics - Anfänger-Themen 4
K Erste Schritte Wie schnell ist LinkedHashMap im Vergleich zur ArrayList, wenn alle Entries durchlaufen werden? Java Basics - Anfänger-Themen 47
R Methoden Eclipse schlägt mir nicht alle Möglichkeiten vor Java Basics - Anfänger-Themen 4
melisax Alle Möglichkeiten eines Wortes angeben Java Basics - Anfänger-Themen 3
B Programm, dass alle 3 Tage eine Webseite öffnet? Java Basics - Anfänger-Themen 20
J Alle .java Dateien von einem Verzeichnis in eine Zip speichern Java Basics - Anfänger-Themen 2
J Alle Dateien aus einem Verzeichnis laden Java Basics - Anfänger-Themen 10
Bademeister007 Operatoren Alle Zahlen einer ArrayList die durch 5 teilbar ist Java Basics - Anfänger-Themen 2
E Wie gebe ich alle Daten zwischen zwei Zeitpunkten aus? Java Basics - Anfänger-Themen 2
crrnogorka Letzte Zeile einer Tabelle "überschreibt" alle anderen Zeilen Java Basics - Anfänger-Themen 1
C alle möglichen Kombinationen zweier Ziffern auf drei / vier / und 'n" Stellen Java Basics - Anfänger-Themen 11
H Alle Geraden zahlen bis 10 ausgeben Java Basics - Anfänger-Themen 11
L Alle Ziele in einem Raster abknallen Java Basics - Anfänger-Themen 17
J Alle Werte eines Strings zusammen addieren Java Basics - Anfänger-Themen 15
S Laufzeit Quicksort wenn alle Elemente gleich sind Java Basics - Anfänger-Themen 4
B Alle Links in einem Text suchen und ersetzen mit einem neuen Link Java Basics - Anfänger-Themen 18
K Array alle Werte aufsummieren und ausgeben Java Basics - Anfänger-Themen 6
Dimax Erste Schritte String replace alle Zeichen Java Basics - Anfänger-Themen 10
L Wie vergrößere ich ein Rechteck in alle Richtungen um eins und bekomme dessen Rand? Java Basics - Anfänger-Themen 2
L Breadth-First Search statt einem Pfad, alle Pfade herausfinden Java Basics - Anfänger-Themen 4
X Erste Schritte String: Alle doppelten Leerzeilen entfernen Java Basics - Anfänger-Themen 21
M Regex-Ausdruck: Alle Zeichen bis auf ein bestimmtes erlauben (p{L}) Java Basics - Anfänger-Themen 5
I Alle Elemente von zwei Listen vergleichen Java Basics - Anfänger-Themen 1
Kirby.exe Alle möglichen Error Möglichkeiten abfangen Java Basics - Anfänger-Themen 33
M Unterklasse soll nicht alle Methoden erben Java Basics - Anfänger-Themen 3
V Erste Schritte for-Schleife; Ausgabe soll alle 5 Sekunden erfolgen. Java Basics - Anfänger-Themen 4
A Alle true Werte eines boolean Arrays herausfiltern Java Basics - Anfänger-Themen 19
D Alle Möglichkeiten, n-Anzahl aus Elementen aus einem Array zu wählen, ausgeben? Java Basics - Anfänger-Themen 23
M prüfen ob alle array werte gleich sind Java Basics - Anfänger-Themen 27
F Alle Zeichenkombinationen eines Strings iterativ herausfinden Java Basics - Anfänger-Themen 26
L Classpath Alle Dateien im Classpath finden Java Basics - Anfänger-Themen 4
G Überprüfen ob alle Ziffern von 1-9 in einem Integer vorhanden sind Java Basics - Anfänger-Themen 6
J Erste Schritte Alle möglichen ausgaben von 5 Zahlen als Vector Java Basics - Anfänger-Themen 7
R Methoden Entferne alle identische Knoten (Typ String) aus verkettete Liste Java Basics - Anfänger-Themen 8
D Methoden Eigene Methode um alle Ausgaben aufzurufen Java Basics - Anfänger-Themen 17
F Ordner auf alle Unterdatein abfragen Java Basics - Anfänger-Themen 3
A In einem String alle Eigennamen zählen Java Basics - Anfänger-Themen 6
B Klassen Alle Unter-Objekte durchlaufen in der Hauptklasse Java Basics - Anfänger-Themen 10
W ArrayList löscht alle Elemente bis auf eines Java Basics - Anfänger-Themen 2
B Webservice -> alle parameter bekommen von form Java Basics - Anfänger-Themen 2
das_leon Alle Zeilen einer CSV-Datei auslesen Java Basics - Anfänger-Themen 1
C HashMap - alle keys haben values der letzten put-Anweisung Java Basics - Anfänger-Themen 3
F Eclipse alle Projekt weg Java Basics - Anfänger-Themen 6
V Alle Komponenten eines JPanels Java Basics - Anfänger-Themen 14
I gemeinsame Config-Datei für alle Windows-User Java Basics - Anfänger-Themen 5
H JButton - Wechsel der Textfarbe alle 500ms Java Basics - Anfänger-Themen 10
DaCrazyJavaExpert Alle Zahlenkombinationen aus 9 zahlen finden Java Basics - Anfänger-Themen 17
F Alle Objekte einer Klasse nach Eigenschaft durchsuchen Java Basics - Anfänger-Themen 8
S Problem: Array alle Einträge gleich Java Basics - Anfänger-Themen 10
Z Enter Taste alle 0,5 Sekunden ausführen Java Basics - Anfänger-Themen 1
U RegEx alle Kommas bei den Zahlen in Punkt umwandeln Java Basics - Anfänger-Themen 3
K alle Vorkommen einer bestimmten Ziffer in einer Zahl zählen Java Basics - Anfänger-Themen 2
X Minimax-Algorithmus über alle Kanten möglich? - Kanten darstellen Java Basics - Anfänger-Themen 1
C Alle Zweierpotenzen bis 2^10 ausgeben lassen Java Basics - Anfänger-Themen 15
B Alle Attribute von Klasse bekommen und ändern Java Basics - Anfänger-Themen 12
M Input/Output Alle Zeilen auslesen und in Variable speichern Java Basics - Anfänger-Themen 5
W Mozilla Thunderbird email an alle Kontakte Java Basics - Anfänger-Themen 3
F Methode alle 15min ausführen Java Basics - Anfänger-Themen 5
D Alle möglichen Kombinationen in einem Array ausgeben Java Basics - Anfänger-Themen 2
I Alle Laufwerke und deres Pfade ausgeben Java Basics - Anfänger-Themen 6
S Classpath: Alle .jars innerhalb eines Ordners einbinden Java Basics - Anfänger-Themen 4
G Alle Objekte und Variablen automatisch ausgeben Java Basics - Anfänger-Themen 7
I Programm, welches eine Textzeile einliest und alle darin enthaltenen Buchstaben umwandelt Java Basics - Anfänger-Themen 3
G Wie bekomme ich alle Ausgaben von runTime.exec() Java Basics - Anfänger-Themen 7
L Best Practice Alle Kombinationen aus Listenelementen, Anzahl Listen unterschiedlich Java Basics - Anfänger-Themen 6
M Compiler-Fehler Alle Methoden eines Interfaces Implementiert dennoch Fehler Java Basics - Anfänger-Themen 3
I Alle Zeitzonen in Liste speichern Java Basics - Anfänger-Themen 4
F alle 100ms Befehle ausführen Java Basics - Anfänger-Themen 26
M Alle Sublisten einer bestimmten Laenge berechnen Java Basics - Anfänger-Themen 2
F Alle DEMOS fast veraltet...? Java Basics - Anfänger-Themen 13
J Alle Leerzeichen aus String entfernen Java Basics - Anfänger-Themen 13
D Methoden Alle Siebenstelligen Primpalidrome von PI Java Basics - Anfänger-Themen 6
K Durch alle Attribute eines Objektes iterieren Java Basics - Anfänger-Themen 6
P Klassen Alle Strings einer ArrayList<eigeneKlasse> anspre Java Basics - Anfänger-Themen 2
W String von hinten alle drei Zeichen abschneiden und in umgekehrter Reihenfolge ausgeben. Java Basics - Anfänger-Themen 9
M Stürzen alle Rekursive Methoden irgendwann ab? Java Basics - Anfänger-Themen 11
M Alle möglichen Strings Java Basics - Anfänger-Themen 5
J Alle Wörter der Länge n mit 0 und 1 Java Basics - Anfänger-Themen 17
T Alle Threads .notify() Java Basics - Anfänger-Themen 13
G Methoden Alle Objekte der ArrayList ausgeben funktioniert nicht. Java Basics - Anfänger-Themen 12
N Klassen Class nur einmal ausführen und sie speichert daten für alle anderen classes? Java Basics - Anfänger-Themen 3
M Klassen Auf Alle Array Methoden gleichzeitig zugreifen Java Basics - Anfänger-Themen 8
D Frame schließt gleich alle Frames Java Basics - Anfänger-Themen 5
T Wie mache ich einen Timer der alle 2 sekunden aufgerufen wird? Java Basics - Anfänger-Themen 5
G JFileChooser "alle Dateien" unterbinden Java Basics - Anfänger-Themen 3
S Aus zwei Dateipfaden alle Dateien auslesen Java Basics - Anfänger-Themen 11
B Frage zur Effizienz - alle Array-Felder initialisieren oder jedes Feld auf null prüfen? Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben