Sollte viel besser sein
Für eine 32-Bit-JVM, die auf einem 64-Bit-Host ausgeführt wird, kann ich mir vorstellen, dass für den Heap der unfragmentierte virtuelle Speicherplatz übrig bleibt, der verfügbar ist, nachdem die JVM, ihre eigenen DLLs und alle 32-Bit-Kompatibilitätsmaterialien für das Betriebssystem geladen wurden. Als wilde Vermutung würde ich denken, dass 3 GB möglich sein sollten, aber wie viel besser das ist, hängt davon ab, wie gut Sie im 32-Bit-Host-Land abschneiden.
Selbst wenn Sie einen riesigen 3-GB-Heap erstellen könnten, möchten Sie dies möglicherweise nicht, da dies dazu führen kann, dass GC-Pausen möglicherweise problematisch werden. Einige Leute betreiben einfach mehr JVMs, um den zusätzlichen Speicher zu nutzen, als einen riesigen. Ich kann mir vorstellen, dass sie gerade die JVMs optimieren, um besser mit riesigen Haufen zu arbeiten.
Es ist ein wenig schwierig, genau zu wissen, wie viel besser Sie tun können. Ich denke, Ihre 32-Bit-Situation kann leicht durch Experimente bestimmt werden. Es ist sicherlich schwer abstrakt vorherzusagen, da viele Dinge eine Rolle spielen, insbesondere weil der auf 32-Bit-Hosts verfügbare virtuelle Speicherplatz eher eingeschränkt ist. Der Heap muss im zusammenhängenden virtuellen Speicher vorhanden sein, also Fragmentierung des Adressraums für DLLs und die interne Verwendung des Adressraums durch den Betriebssystemkern bestimmen den Bereich möglicher Zuordnungen.
Das Betriebssystem verwendet einen Teil des Adressraums für die Zuordnung von HW-Geräten und seine eigenen dynamischen Zuordnungen. Obwohl dieser Speicher nicht dem Adressraum des Java-Prozesses zugeordnet ist, kann der Betriebssystemkernel nicht gleichzeitig auf ihn und Ihren Adressraum zugreifen, sodass die Größe des virtuellen Raums eines Programms begrenzt wird.
Das Laden von DLLs hängt von der Implementierung und der Freigabe der JVM ab. Das Laden des Betriebssystemkerns hängt von einer Vielzahl von Faktoren ab, der Veröffentlichung, der Hardware und der Anzahl der Dinge, die seit dem letzten Neustart bisher zugeordnet wurden. Wer weiß ...
Zusammenfassend
Ich wette, Sie erhalten 1-2 GB in 32-Bit-Land und ungefähr 3 in 64-Bit, also eine allgemeine Verbesserung von ungefähr 2x .