java - umstellen - Wie kann ich feststellen, ob ich in 64-Bit-JVM oder 32-Bit-JVM(innerhalb eines Programms) laufe?




java download 32 bit (6)

Ergänzende Informationen:

Auf einem laufenden Prozess können Sie (zumindest mit einigen aktuellen Sun JDK5 / 6 Versionen):

$ /opt/java1.5/bin/jinfo -sysprops 14680 | grep sun.arch.data.model
Attaching to process ID 14680, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 1.5.0_16-b02
sun.arch.data.model = 32

Dabei steht 14680 für PID von jvm, auf dem die Anwendung ausgeführt wird. "os.arch" funktioniert auch.

Auch andere Szenarien werden unterstützt:

jinfo [ option ] pid
jinfo [ option ] executable core
jinfo [ option ] [[email protected]]remote-hostname-or-IP 

Beachten Sie jedoch auch diesen Hinweis:

" NOTE - Dieses Dienstprogramm wird nicht unterstützt und ist möglicherweise in zukünftigen Versionen des JDK nicht verfügbar. In Windows-Systemen, in denen dbgent.dll nicht vorhanden ist, muss 'Debugging Tools for Windows' installiert sein, damit diese Tools funktionieren PATH-Umgebungsvariable sollte den Speicherort der jvm.dll enthalten, die vom Zielprozess verwendet wird, oder den Speicherort, von dem die Crash-Dump-Datei erstellt wurde. "

Wie kann ich feststellen, ob die JVM, in der meine Anwendung ausgeführt wird, 32 Bit oder 64 Bit ist? Welche Funktion oder welche Präferenz habe ich speziell, um dies innerhalb des Programms zu erkennen?


Sie können die Befehlszeile versuchen:

java -d64 -version

Wenn es sich nicht um eine 64-Bit-Version handelt, erhalten Sie eine Nachricht, die wie folgt aussieht:

Diese Java-Instanz unterstützt keine 64-Bit-JVM. Bitte installieren Sie die gewünschte Version.

Konsultieren Sie die Hilfefunktionen der JVM für weitere Informationen java -help


Um die Version von JVM zu erhalten, läuft das Programm gerade

System.out.println(Runtime.class.getPackage().getImplementationVersion());

Unter Linux können Sie ELF-Headerinformationen mit einem der folgenden beiden Befehle abrufen:

file {YOUR_JRE_LOCATION_HERE}/bin/java

o / p: ELF 64-Bit LSB ausführbare Datei , AMD x86-64, Version 1 (SYSV), für GNU / Linux 2.4.0, dynamisch verlinkt (benutzt gemeinsame libs), für GNU / Linux 2.4.0, nicht entfernt

oder

readelf -h {YOUR_JRE_LOCATION_HERE}/bin/java | grep 'Class'

o / p: Klasse: ELF 64


Wenn Sie JNA verwenden, können Sie überprüfen, ob com.sun.jna.Native.POINTER_SIZE == 4 (32 Bit) oder com.sun.jna.Native.POINTER_SIZE == 8 (64 Bit).


java -version einfach java -version in deine Konsole ein.

Wenn eine 64-Bit-Version läuft, erhalten Sie eine Nachricht wie:

java version "1.6.0_18"
Java(TM) SE Runtime Environment (build 1.6.0_18-b07)
Java HotSpot(TM) 64-Bit Server VM (build 16.0-b13, mixed mode)

Eine 32-Bit-Version zeigt etwas ähnliches wie:

java version "1.6.0_41"
Java(TM) SE Runtime Environment (build 1.6.0_41-b02)
Java HotSpot(TM) Client VM (build 20.14-b01, mixed mode, sharing)

Hinweis Client anstelle von 64-Bit Server in der dritten Zeile. Der Client/Server Teil ist irrelevant, es kommt auf das Fehlen des 64-Bit .

Wenn mehrere Java-Versionen auf Ihrem System installiert sind, navigieren Sie zum Ordner / bin der zu überprüfenden Java-Version und geben java -version dort java -version ein.





32-bit