Wie groß sind die Adressen in Java?

G

Ga345613477

Gast
Ich vermute mal stark, daß die Breite der Adressen davon abhängt, für welche CPU die JVM compiliert wurde.
Also für einen 32 Bit Rechner 32 Bit breit und für einen 64 Bit Rechner 64 Bit breit und falls im Falle des x86 PCs die JVM für einen 32 Bit Rechner compiliert wurde, aber auf einem 64 Bit Rechner unter einem 64 Bit Betriebssystem ausgeführt wird, dürften die Adressen auch nur 32 Bit Breit sein, da dies durch das 32 Bit Compilat der JVM vorgegeben ist.


Allerdings könnte es auch ganz anders sein.
Wie jeder weiß, besteht Java Code aus Java Bytecode und eine JVM ist nichts anderes als eine Maschine in Software für die der Java Bytecode compiliert wurde. Und gerade der Java Bytecode ist es, der mich obige Lösung mit skepsis betrachten läßt, denn der muß auf jeder Maschine gleich laufen, sowohl auf 32 Bit als auch 64 Bit Maschinen und wenn Adressen im Bytecode gespeichert werden, dann wird klar, wo das Problem ist.
Dementsprechend könnte diese virtuelle Maschine auch eine 64 Bit Maschine sein, auch dann, wenn die JVM auf einer 32 Bit Maschine ausgeführt wird. Dementsprechend könnten also die Adressen im Java Bytecode trotzdem 64 Bit breit sein, weil die virtuelle Maschine eine 64 Bit breite Software CPU wäre.
Und so abwegig ist das nicht, denn Java wurde bei seiner Entstehungsphase auch schon früher für echte 64 Bit Maschinen ausgelegt, denn die CPUs für Sun Workstations & Co waren im Gegensatz zum Intel PC bzw. AMD64 schon damals 64 Bit fähig.


Daher suche ich nun nach der Antwort, was nun von den zwei genannten Möglichkeiten die richtige Lösung ist.
 
D

Dow Jones

Gast
Ich habe zwar keine Ahnung (und keine Lust zu googeln), aber mir fällt ad Hoc kein Grund ein weswegen im Bytecode absolute Adressen gespeichert werden sollten. Dafür gibt es doch entsprechende Mechanismen, damit man das eben nicht tun muss (relative Adressierung, Stacks usw). Kannst du da mal ein Beispiel nennen?
Ich würde meinen, das die Unterscheidung zwischen 32 und 64 Bit erst dann zum Problem wird wenn der Java-Bytecode eine Länge von mehr als 4 GB erreicht - und das ist im Augenblick zum Glück noch nicht abzusehen. :)
 

Lumaraf

Bekanntes Mitglied
Die Zeigergröße in der JVM entspricht in der Oracle VM und dem OpenJDK immer der nativen Zeigergröße. Seit Java 7 gibt es aber eine optimierung für 64Bit VMs die komprimierte 32Bit Zeiger verwendet wenn man der VM weniger als 32GB Speicher zuweist. Die Verwendung dieser Optimierung kann man über -XX:+UseCompressedOops steuern.
 

ice-breaker

Top Contributor
Der JVM-Bytecode hat noch keine Ahnung von Pointern, indem stehen die Informationen auch wie in einem Java Quelltext also mit symbolischen Verknüpfungsnamen (this.wert).
Der Pointer wird dann erst von der JVM bei Ausführung des Byte-Codes erzeugt und ist so lang wie die Pointer des Betriebssystems sind (Hint: 64 Bit CPU auf 32 Bit OS ;)). Oder eben kleiner, wie von Lumaraf geschildert, diese Option existiert jedoch schon seit Java 6 Update 14.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
U wie groß sind Verzeichnisse Allgemeine Java-Themen 11
P Erstelltes Programm ist doppelt so groß Allgemeine Java-Themen 11
E Angabe wie groß Array sein soll und in for-schleifen diesen Array füllen Allgemeine Java-Themen 3
D String Groß-/Kleinschreibung Allgemeine Java-Themen 2
F Array viel zu groß...andere Lösungen? Allgemeine Java-Themen 12
R Bild offenbar zu groß um geladen zu werden? Allgemeine Java-Themen 12
E String Groß- und Kleinschreibung Allgemeine Java-Themen 3
P Itext PDf wird zu groß Allgemeine Java-Themen 8
A JUnit Reports zu groß für XSLT Allgemeine Java-Themen 4
V Java-Objekt. wie groß maximal ? anzahl der einträge Allgemeine Java-Themen 4
T Warum wird der Typ String groß geschrieben? Allgemeine Java-Themen 9
C Strings zu groß um damit zu arbeiten Allgemeine Java-Themen 31
T Collections/Arrays sortieren => ä, ö, ü, ß Groß/klein Allgemeine Java-Themen 3
S Drucken!er druckt es zu groß aus! Allgemeine Java-Themen 5
M Unterschiede zwischen Groß- und Kleinschreibung ignorieren Allgemeine Java-Themen 4
Zrebna Wieso sind eigentlich JUnit-Tests in src/test/java platziert - nur Konvention? Allgemeine Java-Themen 7
Sachinbhatt Sind alle Methoden in Java implizit virtuell Allgemeine Java-Themen 2
berserkerdq2 Labels in IJVM sind keine lokalen Variablen oder? Allgemeine Java-Themen 2
O Produziert das Tool "jpackage" (ab JDK 14) .exe Dateien, die auf einer Zielumgebung ohne JRE lauffähig sind ?` Allgemeine Java-Themen 7
KeTho1712 Java Swing: JTable standardmäßig füllen, sodass bei Start bereits Datensätze gespeichert sind Allgemeine Java-Themen 1
W Wieviele Threads sind sinnvoll? Allgemeine Java-Themen 8
L Bewerberaufgaben sind nur Zeitverschwendung... Allgemeine Java-Themen 10
W Was genau sind IOTools? Kann ich stattdessen nicht die Scanner Klasse verwenden? Allgemeine Java-Themen 3
D Was sind Bibliotheken in Java/Pyhton? Allgemeine Java-Themen 1
F Java Installationen sind unterschiedlich Allgemeine Java-Themen 11
N Was sind Logger in Java? (bzgl. SonarLint) Allgemeine Java-Themen 3
Kaffeevertilger Warum nullable Booleans doof sind ... Allgemeine Java-Themen 22
Sogomn OOP Sind Helferklassen böse? Allgemeine Java-Themen 3
A Datentypen Gregorian Calendar - 2 Daten sind gleich?? Allgemeine Java-Themen 3
Bluedaishi Dateien löschen die älter als das aktuelle Datum sind Allgemeine Java-Themen 9
U Set erklären dass objekte gleich sind Allgemeine Java-Themen 12
G Generics sind zu streng - oder ich zu naiv? Allgemeine Java-Themen 3
E Funktion sperren bis Unterfunktionen ferig sind Allgemeine Java-Themen 3
S Hash-Bereiche erstellen die gleichverteilt sind..? Allgemeine Java-Themen 8
L Sicherstellen das 2x die gleichen Daten unter bestimmten Keys enthalten sind. Allgemeine Java-Themen 6
S ThreadPoolExecutor: wie stelle ich fest dass meine Threads im Pool mit ihrer Arbeit fertig sind? Allgemeine Java-Themen 3
H Prüfen, ob doppete Werte in int-Array vorhanden sind Allgemeine Java-Themen 16
N URL einlesen -> Daten sind nicht vollständig bzw. korrekt Allgemeine Java-Themen 9
G Datei einlesen: Umlaute sind Fragezeichen Allgemeine Java-Themen 23
aokai Testen von Klassen die abhängig von Stdlibs URL sind Allgemeine Java-Themen 3
M Methodenaufrufe sind über Interfaces langsamer. Allgemeine Java-Themen 43
G Sind Applets noch uptodate Allgemeine Java-Themen 24
D Problem mit Tooltips und JFrame (Tooltips sind zu kurz!) Allgemeine Java-Themen 4
T Überprüfen ob zwei Farben ähnlich sind Allgemeine Java-Themen 14
M Sind Streams asynchron? Allgemeine Java-Themen 2
G Prüfen ob Ziffern einer Zahl pandigital sind? Allgemeine Java-Themen 15
O Warten bis alle gestarteten Threads beendet sind? Allgemeine Java-Themen 6
reibi JVM fragen welche Apps geladen sind Allgemeine Java-Themen 7
M wie dateien speichern damit sie platform unabhängig sind? Allgemeine Java-Themen 2
D gewisse Zeichen sind nach dem entschlüsseln anders Allgemeine Java-Themen 2
K Wie gut sind java.util - ADTs ? Allgemeine Java-Themen 2
Bleiglanz Benchmarks sind sehr schwierig Allgemeine Java-Themen 2
P Woher weiß ein Programm wo seine Ressourcen sind? Allgemeine Java-Themen 4
N String überprüfen ob nur Ziffern enthalten sind!! Allgemeine Java-Themen 8
S Was sind eigentlich Java Beans? Allgemeine Java-Themen 2
D MAC Adressen Abfrage Allgemeine Java-Themen 5
J Echte Adressen aus Internet Allgemeine Java-Themen 28
S Mail Adressen Syntax prüfen Allgemeine Java-Themen 22
G Adressen in Datei speichern und wieder auslesen Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben