Maximale int[]-Arraygröße
-
das sind dann aber nach meinen berechnungen (32 bit für int) 24 GB speicher, die du dafür benötigst, und so viel speicher stehen der JVM nicht zu. So viel ram hat auch kaum ein rechner, zumal der speicher ja auch überhaupt nicht adressierbar wäre (ich weiß jetzt nicht, wie das mit dem SWAP funktioniert). Also wenn du auf einem 32 bit rechner bist, sind maximal 4GB speicher adressierbar, also deutlich weniger.
-
Krux schrieb:
das sind dann aber nach meinen berechnungen (32 bit für int) 24 GB speicher, die du dafür benötigst, und so viel speicher stehen der JVM nicht zu.
(2**31)*(32/8) == 8589934592 == 8 GB.
-
Krux schrieb:
das sind dann aber nach meinen berechnungen (32 bit für int) 24 GB speicher, die du dafür benötigst, und so viel speicher stehen der JVM nicht zu. So viel ram hat auch kaum ein rechner
Es sind, wie schon gesagt 8GB. ...und die sollten in etwa in 4-5 Jahren Standardausstattung von neuen Rechnern sein.
-
wenn man dann auch noch ein OS hat, das einer anwendung soviel speicher zuweist, ist ja alles in butter. windows z.b. schränkt jede anwendung auf 2 GB ein (3 GB mit nem flag), obwohl es als 32-bittiges OS mit 4 GB umgehen kann. sauerei
-
ein 32-bit os kann keine 4 gb ram effektiv addressieren. wer einen 32bit prozessor und 4 gb ram hat is irgendwie bisschen doof
-
nööö schrieb:
ein 32-bit os kann keine 4 gb ram effektiv addressieren. wer einen 32bit prozessor und 4 gb ram hat is irgendwie bisschen doof
wieso? ein 32 bit wert kann 4294967296 werte annehmen, was "rein zufällig" exakt 4gb adressraum entspricht.
vielleicht kann kein existierendes 32-bit consumer-os auf gängiger hardware (sprich x86) 4 gb ram adressieren, aber prinzipiell geht das schon.
auch mehr als 4 gb sind möglich, wenn man mit segmenten und offsets arbeitet (wie damals auf dem 8086, der nur 16 bit adressraum hatte aber trotzdem 1 MB adressieren konnte).
-
!logged schrieb:
16 bit adressraum
16 bit registerbreite war gemeint.
-
nööö schrieb:
ein 32-bit os kann keine 4 gb ram effektiv addressieren. wer einen 32bit prozessor und 4 gb ram hat is irgendwie bisschen doof
Seltsamer Weise kann ein 16-bit os mehr als 65536 Byte addressieren. Viel mehr sogar. Sehr merkwürdig.
-
nööö schrieb:
ein 32-bit os kann keine 4 gb ram effektiv addressieren...
Das kommt auf das OS drauf an. Windows mit 4GB Ram sieht 2GB für das OS und 2GB für User vor. Das heisst, das ein int-Array(auch nicht effektiv) höchstens 2GB groß sein könnte...
-
windows kann keine 4gb effektiv ram nutzen, es muss auch noch grafikkarte etc. addressieren
-
nööö schrieb:
windows kann keine 4gb effektiv ram nutzen, es muss auch noch grafikkarte etc. addressieren
verwaltet sich die Grafikkarte nicht selbst?