JVM Memory Usage

Status
Nicht offen für weitere Antworten.

dayaftereh

Top Contributor
Hallo
Also ich habe ein Programm, welches über binare Dateien läuft und bestimmte Datensätze heraus nimmt, welche auf mein Suchkriterium passen. Diese Datensätze werden jetzt in eine Liste gespeichert. Das Problem ist jetzt, wenn meine Suche zu groß wird bekomme ich eine OutOfMemoryError, da JVM mir nur ein bestimmt Platz im Memory frei hält. Ich könnte jetzt natürlich den Zugewiesenen Speicher von JVM vergrößern (z.b. -Xmx200m) aber das ist nicht der Sinn. Ich möchte gerne diese Exception abfangen und dem Nutzer sagen, er solle seine Suche einschränken.

Meine Idee ist es bei dem befüllen der Liste zu prüfen ob der TotalMemory den MaxMemory überschritten hat.

Also:
Code:
double totalMemory = Runtime.getRuntime().totalMemory();
//die mal 0.90 wegen den 10% abzug
double maxMemory = Runtime.getRuntime().maxMemory()*0.90;

if( totalMemory >= maxMemory){
	//her das befühlen der Liste stoppen
}

So, das Funktioniert beim ersten Such lauf gut, aber wenn ich dann noch mal Such, und zwar eine Suche wo ich weiß das sie den Memory nicht überfühlt wird, stoppt er trotz dem das befühlen der Liste, weil nämlich JVM den Total Speicher nicht mehr hergibt und nur intern weiter nutzt (im TaskMan immer 60m), so ist der totalMemory immer gleich wie der MaxMemory.

Wie kann ich das umgehen oder gibt es eine Andere Lösung auf den totalMemory intern zuzugreifen. Oder gibt es eine Möglichkeit den UsageMemory herauszubekommen. Ich habe auch den Garbage Collector vor dem überprüfen des Speichers aufgerufen, klapp auch nicht.

Danke schon mal
 

ice-breaker

Top Contributor
warum speicherst du nicht nur "Referenzen" (hier: = Markierungen) auf die Datensätze in den binären Datenfile und lädst dann die Daten, in dem Moment wo sie gebraucht werden aus dem File?
Denn zB 20000 Datensätze laden bis der Ram voll ist, wird dem Nutzer ja auch nichts bringen, wenn er sich vllt nur die ersten 50 ansehen will.
 

dayaftereh

Top Contributor
Ist eigentlich ne gute Sache, habe ich mir auch Überlegt, aber es geht darum alles Im Memory zu haben... um damit weiter zu arbeiten^^
 
V

Vayu

Gast
was machst du nach dem ersten Suchlauf? Setzt du deine Variablen wieder auf null und lässt den garbage collector drüber laufen? Sollte der nicht den nicht benötigten Speicher wieder freigeben?
 

Murray

Top Contributor
Mit Runtime.freeMemory() bekommst Du heraus, wieviel freier Speicher noch vorhanden ist. Das bezieht sich aber immer nur auf totalMemory, nicht auf maxMemory; das Ergebnis gibt also an, welcher Anteil von totalMemory noch frei ist. Wenn man wissen will, wieviel Speicher man insgesamt noch zur Verfügung hat, müsste man
Code:
Runtime rt = Runtime.getRuntime();
long available = rt.maxMemory() - rt.totalMemory() + rt.freeMemory()
rechnen.
 

dayaftereh

Top Contributor
Hey

Also das Problem war, das ich ein Frame habe wo ich die Ergebniss Anzeige, dieses Frame habe ich einfach auf visiable = false gesetzt, so wurde es nie aus dem Speicher gelöscht....

Danke
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Foreign Memory API / Memory-Mapped File Allgemeine Java-Themen 0
C Durch klicken von Button in GUI wird leeres Fenster geöffnet und nicht mein Spiel "Memory" Allgemeine Java-Themen 13
E Java Shared Memory? Allgemeine Java-Themen 6
B Java Sound Memory Overload Allgemeine Java-Themen 0
P Memory Editing mit JNA, tutorial? Allgemeine Java-Themen 3
Q Memory-Leak in BlockingQueue Allgemeine Java-Themen 3
E Zweidimensionales Array Integer[10 000][10 000] -> out of memory? Allgemeine Java-Themen 4
X Bild im Memory zwischen speichern Allgemeine Java-Themen 11
T Java Memory Puzzle Allgemeine Java-Themen 6
H jni memory problem Allgemeine Java-Themen 8
S Memory Leak!!! Allgemeine Java-Themen 7
Z Schwankung "Total Memory"? Allgemeine Java-Themen 8
L Methode "Neues Spiel" für Memory Allgemeine Java-Themen 2
L Brauche Hilfe bei Memory Programmierung Allgemeine Java-Themen 2
H Tomcat VM out of memory Allgemeine Java-Themen 7
M File im memory erzeugen Allgemeine Java-Themen 5
F Frage zu Memory Leak, Garbage Collection und Profiler-Tools Allgemeine Java-Themen 6
P Java Memory Leaks Allgemeine Java-Themen 12
J Out Of Memory - Speicher vergrößern? Allgemeine Java-Themen 2
C ArrayList Out of Memory Allgemeine Java-Themen 28
P out of memory -> heap wächst und wächst Allgemeine Java-Themen 7
J RAM freimachen mit KOmprimiertem in-memory-swap Allgemeine Java-Themen 7
S Usage: java ZipInfo zfname Allgemeine Java-Themen 5
G jstat Heap(Size/Usage) PermGen(Size/Used) vs JVisual VM Allgemeine Java-Themen 2
Q JConsole - CPU Usage Multi-Core Allgemeine Java-Themen 2
X Festplattengröße, CPU Usage unter Java 1.5 Allgemeine Java-Themen 21
G Ram Usage under 64bit doubles? Allgemeine Java-Themen 24

Ähnliche Java Themen

Neue Themen


Oben