Ich muss eine speicherintensive Java-Anwendung ausführen, die mehr als 2 GB verwendet, habe jedoch Probleme, die maximale Größe des Heapspeichers zu erhöhen. Bisher habe ich folgende Ansätze ausprobiert:
Einstellen des Parameters -Xmx, z. B. -Xmx3000m. Dieser Ansatz schlägt bei der Erstellung der JVM fehl. Nach dem, was ich gegoogelt habe, sieht es so aus, als müsste -Xmx weniger als 2 GB betragen.
Verwenden der Option -XX: + AggressiveHeap . Wenn ich diesen Ansatz versuche, wird der Fehler "Nicht genügend Speicher" angezeigt, der besagt, dass die Heap-Größe 1273,4 MB beträgt, obwohl mein Computer über 8 GB Speicher verfügt.
Gibt es einen anderen Ansatz, mit dem ich versuchen kann, die maximale Heap-Größe der JVM zu erhöhen? Hier ist eine Zusammenfassung der Computerspezifikationen:
- Betriebssystem: Windows 7 (64 Bit)
- Prozessor: Intel Core i7 (2,66 GHz)
- Speicher: 8 GB
- Java-Version:
java version "1.6.0_18" Java(TM) SE Runtime Environment (build 1.6.0_18-b07) Java HotSpot(TM) Client VM (build 16.0-b13, mixed mode, sharing)
quelle
Antworten:
Holen Sie sich eine 64-Bit-JVM von Oracle .
quelle
Wenn Sie JVM im 32-Bit-Modus verwenden, kann maximal 1280 MB Heap-Größe zugewiesen werden. Wenn Sie darüber hinausgehen möchten, müssen Sie JVM im 64-Modus aufrufen.
Sie können Folgendes verwenden:
wo,
Sie können -Xms und -Xmx gemäß Ihren Anforderungen einstellen (YMMV).
Eine sehr gute Ressource zur Optimierung der JVM-Leistung, die Sie sich ansehen sollten: http://java.sun.com/javase/technologies/hotspot/gc/gc_tuning_6.html
quelle
Ich glaube, das 2-GB-Limit gilt für 32-Bit-Java. Ich dachte, v1.6 wäre immer 64-Bit, aber versuchen Sie, den 64-Bit-Modus zu erzwingen, nur um zu sehen: Fügen Sie die Option -d64 hinzu.
quelle
32-Bit-Java ist auf ungefähr 1,4 bis 1,6 GB beschränkt.
Häufig gestellte Fragen zu Oracle 32-Bit-Heaps
Zitat
Die maximale theoretische Heap-Grenze für die 32-Bit-JVM beträgt 4G. Aufgrund verschiedener zusätzlicher Einschränkungen wie verfügbarem Swap, Verwendung des Kernel-Adressraums, Speicherfragmentierung und VM-Overhead kann das Limit in der Praxis viel niedriger sein. Auf den meisten modernen 32-Bit-Windows-Systemen liegt die maximale Heap-Größe zwischen 1,4 G und 1,6 G. Auf 32-Bit-Solaris-Kerneln ist der Adressraum auf 2G beschränkt. Unter 64-Bit-Betriebssystemen, auf denen die 32-Bit-VM ausgeführt wird, kann die maximale Heap-Größe höher sein und sich auf vielen Solaris-Systemen 4G nähern.
quelle
Unten funktioniert conf für mich:
quelle