# Arbeitsspeicher ermitteln?



## ulr!ch (27. Apr 2007)

Hi JavaGemeinde,

gibt's keine Möglichkeit, die Größe des Arbeitsspeicher zu ermitteln?
Den Thread habe ich gelesen und der macht ja nicht allzu viel Mut. Vielleicht gibt's ja einen workaround?

Liebe Grüße,
Ulrich


----------



## AlArenal (27. Apr 2007)

Welchen Sinn hätte es die RAM-Größe zu ermitteln, wo man der VM nachträglich eh nicht mehr Speicher zuweisen kann und man sowieso keinen direkten Zugriff hat?


----------



## thomator (27. Apr 2007)

Zumindest den Speicher der JVM kann man über das RunTime-Object ermitteln.



```
getRuntime().freeMemory();
getRuntime().maxMemory();
```

evtl. hilft Dir das ja schon weiter?


----------



## ulr!ch (27. Apr 2007)

AlArenal hat gesagt.:
			
		

> Welchen Sinn hätte es die RAM-Größe zu ermitteln, wo man der VM nachträglich eh nicht mehr Speicher zuweisen kann und man sowieso keinen direkten Zugriff hat?


Gute Frage, das hätte ich direkt von Anfang erwähnen können. ;-)
Ich möchte gerne alle Exceptions in einem Prog in einer log-Datei aufzeichnen (ja, ich weiß, dafür gibt's auch log4j) und ich dachte ein paar Daten der Umgebung wie java.version und die Größe des Arbeitsspeichers könnten hinterher dabei helfen, die Ursache potenzieller Fehler zu ermitteln. Bitte keine Kommentare darüber, dass man so programmieren soll, dass keine Fehler auftreten... 

By<e Ulrich


----------



## thomator (27. Apr 2007)

Dann reicht es Dir doch aber, wenn Du die größedes Speichers der JVM kennst und mit einträgst. Der Arbeitsspeicher ist eh uninteressant, wenn die JVM nicht genug zugewiesen bekommt...


----------



## AlArenal (27. Apr 2007)

Wäre dann ne Erweiterung von 


```
Properties prop = System.getProperties();
        Enumeration en = prop.propertyNames();        
        while (en.hasMoreElements()) {
            String key = (String) en.nextElement();
            System.out.println(key + " = " + System.getProperty(key));
        }
```


----------



## thomator (27. Apr 2007)

@AlArenal
 :bahnhof: und dann?


----------



## AlArenal (27. Apr 2007)

Dann hängt er deine zwei Zeilen an und schon hat er seinen Krims protokolliert.


----------



## thomator (27. Apr 2007)

ach so...
 :applaus:


----------



## ulr!ch (27. Apr 2007)

Also vielen Dank an alle,

für die schnelle und ausführliche Antwort. Das mit Runtime.getRuntime().X kannte ich noch nicht und ist ja genau das, was ich wissen wollte. ;-) Wenn ich das durch 1024 dividiere bekomme ich doch MB, oder? Möchte nur sicher gehen...


```
log.writeFileln("UsedMemory:\t\t\t\t"+((Runtime.getRuntime().maxMemory()/1024)-(Runtime.getRuntime().freeMemory()/1024)));
```

to AlArenal: Die für mich wichtigen System.properties lasse ich mich auch ausgeben, aber dennoch danke für die "Ergänzung".


----------



## byte (27. Apr 2007)

Ich denke mal, die Methoden liefern die Größe in Bytes, insofern würde die Division durch 1024 lediglich KiloByte liefern.


----------



## ulr!ch (27. Apr 2007)

byto hat gesagt.:
			
		

> Ich denke mal, die Methoden liefern die Größe in Bytes, insofern würde die Division durch 1024 lediglich KiloByte liefern.



Jaja, genau, meinte ich auch...
Damit ist's für mich der Thread zur vollsten Zufriedenheit abgeschlossen.
Vielen Dank.

Liebe Grüße,
Ulrich


----------



## GoWa (27. Apr 2007)

Hallo,

noch ne kurze frage. Warum ist meine VM quasi voll ?
Hab das coding in ner Testklasse im das Ergeniss mal zu sehen und dann wurde ich stuzig:

UsedMemory:64780912/66650112/2031616
1. Wert = max-free
2. Wert = max
3. Wert = total

Danke für entsprechende Ideen. Ich mach jetzt noch nen kurzen reboot und editiere fals sich was ändert.


----------



## thomator (27. Apr 2007)

Passiert das direkt nach dem starten der JVM oder hast Du schon was laufen?


----------



## ulr!ch (27. Apr 2007)

Hi,

bei mir sieht es ganz ähnlich aus, ich denke, das liegt daran, dass die JVM standardmäßig 64 MB reserviert und voll auslastet. Meine Werte sind ähnlich:

MaxMemory: 65088
FreeMemory: 1138
UsedMemory: 63959

By<e Ulrich


----------



## GoWa (27. Apr 2007)

thomator hat gesagt.:
			
		

> Passiert das direkt nach dem starten der JVM oder hast Du schon was laufen?


´

Jo direkt nach dem Reboot genau das gleiche.
Scheint wohl echt so das die JVM den Speicher blockt.

Oder eben ein Problem das im OS(Win hier)/JRE Begründet ist.


----------



## thomator (27. Apr 2007)

Leg mal die xms und xmx-werte ein Stück auseinander, also 64MB und 128MB.


----------



## ulr!ch (27. Apr 2007)

thomator hat gesagt.:
			
		

> Leg mal die xms und xmx-werte ein Stück auseinander, also 64MB und 128MB.


Was heißt das? 
Und wie macht man das?
Und wozu?

By<e Ulrich


----------



## AlArenal (27. Apr 2007)

Frag doch mal die Forumsuche....


----------

