# Maximaler RAM



## StupidQuestion (31. Aug 2009)

Guten Morgen!

Bei einem 32 Bit-System kann einer VM (soweit ich informiert bin) maximal 1,5 GB RAM zugeordnet werden. Wie schaut das bei einem 64 Bit-System aus?

Danke!


----------



## Noctarius (31. Aug 2009)

Begrenzt durch freien Arbeitsspaeicher -  einige MB (später GB) für die Verwaltung des RAM durch die VM und den GarbageCollector


----------



## StupidQuestion (31. Aug 2009)

Noctarius hat gesagt.:


> Begrenzt durch freien Arbeitsspaeicher -  einige MB (später GB) für die Verwaltung des RAM durch die VM und den GarbageCollector



Danke für deine Antwort! Also bei einem 64-Bit System kann ich so viel Speicher verwenden, wie das System Speicher zur Verfügung hat!? Danke!


----------



## Painii (31. Aug 2009)

StupidQuestion hat gesagt.:


> Danke für deine Antwort! Also bei einem 64-Bit System kann ich so viel Speicher verwenden, wie das System Speicher zur Verfügung hat!? Danke!



Kannst du bei einem 32-bit System genauso. Du hast eben nur maximal weniger zur Verfügung.
32-bit: 2^32=4GB maximal (wenn sonst nix abgezogen wird)
64-bit: 2^64= mehr


----------



## StupidQuestion (31. Aug 2009)

Painii hat gesagt.:


> Kannst du bei einem 32-bit System genauso. Du hast eben nur maximal weniger zur Verfügung.
> 32-bit: 2^32=4GB maximal (wenn sonst nix abgezogen wird)
> 64-bit: 2^64= mehr



Halte ich für ein Gerücht:


```
C:\>java -Xms2048m -Xmx2050m Test
Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.
```

Bei 2,5 GB freiem RAM


----------



## Noctarius (31. Aug 2009)

Painii hat gesagt.:


> 32-bit: 2^32=4GB maximal (wenn sonst nix abgezogen wird)



Grundsätzlich ja, aber ein 32Bit Betriebssystem kann nur in Verbindung mit richtigem Board / BIOS auch 4 GB ansprechen (bei älteren Kombinationen fällt auch Shadow-RAM, BIOS usw in die 3 Gig).

Weiterhin kann z.B. Windows auf 32Bit max 3 GB RAM für einen Prozess reservieren (mehr hätte auch nicht Sinn, weil das Betriebssystem selbst auch Speicher benötigt). Ausnahmen sind die die 32Bit Serverbetriebssysteme von Windows (in den teuren Varianten), da diese mit Paging bis zu 32 GB RAM adressieren können.

Er hat Recht. Unter 32Bit Windows oder unter Windows x64 und Java 32Bit ist bei 1,6irgendwas GB Schluss. Wieso dieses seltsame Limit existiert ist mir auch nicht klar. Ich vermute Reservierung von Speicher zur Verwaltung der VM.


----------



## tme (31. Aug 2009)

StupidQuestion hat gesagt.:


> ```
> C:\>java -Xms2048m -Xmx2050m Test
> Error occurred during initialization of VM
> Could not reserve enough space for object heap
> ...



Das ist eine von den Sachen, die mich auch irritieren. Bei 2.8GB freiem Arbeitsspeicher (laut Taskmanager) kann ich -Xmx kaum jemals höher als ca. 1680m setzen. Alles darüber wird mit der oben angegebenen Fehlermeldung beendet.

Hat jemand eine Idee, wodurch sich das so stark minimiert?


----------



## StupidQuestion (31. Aug 2009)

Danke ... solang alles mit 64 Bit funktioniert, bin ich zufrieden  .


----------



## maki (31. Aug 2009)

> Hat jemand eine Idee, wodurch sich das so stark minimiert?


Liegt an der sog. "Speicherverwaltung" von Windows, nicht an der JVM.


----------



## eliot (31. Aug 2009)

Unter Linux mit BigMemKernel kann ich auch unter 32bit 2048 MG anfordern.


----------



## Painii (31. Aug 2009)

eliot hat gesagt.:


> Unter Linux mit BigMemKernel kann ich auch unter 32bit 2048 MG anfordern.



Das ist dann aber wohl kein reiner RAM (sondern mit Zugriff auf Platte oder so) oder?

Und ich hab ja oben geschrieben maximal 4GB... dass das OS mir die nicht alle gibt ist mir auch klar


----------



## maki (31. Aug 2009)

> Das ist dann aber wohl kein reiner RAM (sondern mit Zugriff auf Platte oder so) oder?


Natürlich "reiner RAM", wieso denn auch nicht?



> Und ich hab ja oben geschrieben maximal 4GB... dass das OS mir die nicht alle gibt ist mir auch klar


Deine Antwort hat leider nicht auf die Frage gepasst 
Es ging nicht darum wieviel RAM addressierbar ist, sondern darum, wieviel RAM der JVM zugeordnet werden kann.


----------



## Painii (1. Sep 2009)

maki hat gesagt.:


> Natürlich "reiner RAM", wieso denn auch nicht?


Hab bei der Einheit "MG" beim kurzen drüberfliegen gedacht "ist bestimmt mehr als 4GB"...
Mein Fehler.



> Deine Antwort hat leider nicht auf die Frage gepasst
> Es ging nicht darum wieviel RAM addressierbar ist, sondern darum, wieviel RAM der JVM zugeordnet werden kann.


Kommt dann eben auf das Betriebssystem an, wieviel da vom Speicher abgezogen wird.
Auf jeden Fall werden es nicht mehr als 4GB werden für ein 32-bit System. Und ich finde die obere Grenze dafür anzugeben ist eine passende Antwort.

Mir reichen an RAM auch 1.5GB für Java zurzeit. Wenn ich mehr speichern will dann nehm ichs in Kauf wenn ich auf die Platte schreiben muss. Wem das zu lahm ist, der nimmt dann eben ne 64-bit-Lösung und freut sich. Ist ja für jeden was dabei


----------



## eliot (1. Sep 2009)

Hallo,

sorry, ich meine natürlich MB, nicht MG!
2 GB brauchen wir hier z.B beim Kompilieren, mehr ist aber mit einer 32bit VM anscheinend nicht drin.


----------



## Noctarius (1. Sep 2009)

Painii hat gesagt.:


> Mir reichen an RAM auch 1.5GB für Java zurzeit. Wenn ich mehr speichern will dann nehm ichs in Kauf wenn ich auf die Platte schreiben muss. Wem das zu lahm ist, der nimmt dann eben ne 64-bit-Lösung und freut sich. Ist ja für jeden was dabei



Ich bastel gerade an einem Datenbankconverter (für die Firma) -> Altes Format muss komplett überführt werden in das geänderte (wachsende Anforderungen an ein System sind was tolles ).

Da muss ich knapp 12 mio Datensätze vorladen um dann die benötigten neuen Daten einschieben zu können. Ich sag dir 1.5GB sind garnichts *gg*


----------

