# Maximalwert für Kommandozeilenoption -Xmx



## Grizzly (19. Okt 2009)

Hallo alle zusammen,

ich weiß, dass das Thema schon in verschiedenen Ausprägung hier im Forum diskutiert wurde. Nachdem ich aber im Internet nirgends etwas dazu gefunden habe: Hat jemand irgendwelche Tabellen, in welcher VM unter welchem Betriebssystem welcher maximalwert für den Heap möglich ist?

Ich habe hier ein Windows XP Prof 32 Bit. Der Rechner hat 4 GB, wobei mir Windows in den Systemeigenschaften 3,49 GB anzeigt (ich vermute, dass im restlichen Adressbereich andere Sachen wie Grafikkarte, BIOS, usw. liegen). Und hier scheint der maximale mögliche Wert bei 1,5 GB (sprich -Xmx1536M) zu liegen. Ist aber nirgends nachgeschaut sondern empirisch nachgewiesen.


----------



## Unregistriert (19. Okt 2009)

Deine Vermutung ist richtig. es werden standardmäßig einige hundert MB an Arbeitsspeicher für die Geräte gesichert und sind für das Betriebssystem nicht addressierbar...

Was deine Frage betrifft, wünsche ich dir viel glück auf eine gute Antwort. Ich kann dir da leider keine verbindliche Antwort liefern...


----------



## maki (19. Okt 2009)

Auf 32 Bit  Linux kann man bis zu 2 GiB zuweisen AFAIK, unter 32 Bit Windows nur bis eben die 1,5 GiB.


----------



## FArt (19. Okt 2009)

Grizzly hat gesagt.:


> Ist aber nirgends nachgeschaut sondern empirisch nachgewiesen.


Anders geht es auch nicht. Für ein BS kann man nur ungefähre Richtwerte angeben, ein genauerer Wert hängt aber von mehreren Faktoren ab und ist nicht allgemein gültig.


----------



## Grizzly (19. Okt 2009)

FArt hat gesagt.:


> Anders geht es auch nicht. Für ein BS kann man nur ungefähre Richtwerte angeben, ein genauerer Wert hängt aber von mehreren Faktoren ab und ist nicht allgemein gültig.


Von mehreren Faktoren? Wie meinst Du das? Die Faktoren VM, Betriebssystem und Plattform (also 32 Bit / 64 Bit) sind ja die Variablen. Ansonsten würde mir nur einfallen, ob genügend virtueller Speicher vorhanden ist. Die meisten anderen Faktoren hängen schon an den genannten Variablen (bspw. Techniken und Strategien der Speicherzuteilung und Auslagerung).

Oder an was dachtest Du konkret?


----------



## Unregistriert (20. Okt 2009)

Eine variable, die Einfluss darauf hat ist z.B. verf. RAM und freier RAM
Beides dinge, die man in einer Liste gar nicht, bzw. nur sehr schwer darstellen kann


----------



## FArt (20. Okt 2009)

Grizzly hat gesagt.:


> Oder an was dachtest Du konkret?



Ich dachte an von mir empirisch ermittelte Werte, die vermeintlich nicht übertragbar waren.


----------



## Grizzly (20. Okt 2009)

Unregistriert hat gesagt.:


> Eine variable, die Einfluss darauf hat ist z.B. verf. RAM und freier RAM
> Beides dinge, die man in einer Liste gar nicht, bzw. nur sehr schwer darstellen kann


Okay, ich denke, es ist sicherlich sinnvoll, das der freie Speicher (Physisch + Auslagerungsdatei in Berücksichtigung der Technik / Strategie des jeweiligen Betriebssystems) größer ist, als der Angeforderte. Und der verfügbare Speicher - sprich der Gesamtspeicher - sollten dann ja noch größer sein, da er mindestens das Betriebssystem noch beinhalten muss.
Es würde bspw. sicher wenig Sinn machen, auf einem System mit 512 MB RAM und einer Auslagerungsdatei von 512 MB, wobei das Betriebssystem schon 256 MB belegt, die VM per Parameter anzuweisen, 2 GB Speicher zu reservieren.


FArt hat gesagt.:


> Ich dachte an von mir empirisch ermittelte Werte, die vermeintlich nicht übertragbar waren.


Wenn ich meinen Wert vom Anfang nehme (1,5 GB bei Windows XP 32 Bit mit 4 bzw. 3,5 GB RAM ohne Auslagerungsdatei - wobei die höchst wahrscheinlich egal wäre), dann ist das ja schon übertragbar. Oder wie meinst Du das?


----------



## FArt (20. Okt 2009)

Grizzly hat gesagt.:


> Oder wie meinst Du das?


Ich  habe keine Zahlen mehr im Kopf, aber 1,5 Gig auf einer Windowskiste... ich glaube das war manchmal zu hoch gegriffen, abhängig von der Version und vom Build der VM.
Nimm JRockit, da geht mehr ;-)


----------

