Zunächst einmal habe ich einen Rechner mit 8 GB RAM, so dass ich bezweifle, dass der Gesamtspeicher das Problem ist. Diese Anwendung läuft gut auf Maschinen mit 6gb oder weniger.
Ich versuche, 3 GB Speicherplatz mit -Xmx3G unter "VM Arguments" in Run Configurations in Eclipse zu reservieren.
Jedes Mal, wenn ich versuche, mehr als 1500 MB zu reservieren, erhalte ich diese Fehlermeldung: "Während der Initialisierung der VM ist ein Fehler aufgetreten; Es konnte nicht genügend Speicherplatz für den Objekt-Heap reserviert werden" mit -Xmx3G
Was ist hier los?
Dies ist eigentlich kein Eclipse-spezifisches Problem; es ist ein allgemeines Java-auf-Windows-Problem. Es liegt daran, wie die JVM Speicher auf Windows zuweist. Windows; es besteht darauf, einen zusammenhängenden Speicherbereich zuzuweisen, den Windows oft nicht zur Verfügung stellen kann, selbst wenn es genug separate Speicherbereiche gibt, um die um die Zuweisungsanforderung zu erfüllen. Es gibt Hilfsprogramme, die versuchen, Windows bei der Defragmentierung des Speichers zu helfen, was theoretisch in dieser Situation helfen würde, aber ich habe sie nicht wirklich ausprobiert aber ich habe sie noch nicht ernsthaft ausprobiert und kann daher nichts über ihre Effektivität sagen. Eine Sache, von der ich manchmal gehört habe, dass sie helfen könnte, ist, Windows neu zu starten und vor dem Start anderer Anwendungen die Java-Anwendung zu starten, die den große Menge an Speicher benötigt. Wenn Sie Glück haben, hat Windows seinen Speicherplatz noch nicht fragmentiert Speicherplatz noch nicht fragmentiert und Java bekommt den zusammenhängenden Block, nach dem es fragt.
Irgendwo im Internet gibt es weitere technische Erklärungen und Analysen zu diesem Thema, aber ich habe keine Referenzen zur Hand.
Ich habe aber das hier gefunden, das hilfreich zu sein scheint: https://stackoverflow.com/a/497757/639520
Vergewissern Sie sich, dass in Eclipse tatsächlich dieselbe JVM läuft, von der Sie glauben, dass sie läuft. Wenn Sie Java in Ihrem Webbrowser verwenden, haben Sie wahrscheinlich auch eine 32-Bit-Version im Umlauf, die Vorrang haben könnte, wenn sie in letzter Zeit installiert oder aktualisiert wurde.
Um absolut sicher zu sein, empfehle ich Ihnen, diese beiden Zeilen am Anfang Ihrer Datei "eclipse.ini" hinzuzufügen:
-vm
C:/Java/jdk1.6.0_27/bin
...wo sich auf meinem Rechner C:/Java/jdk1.6.0_27/bin
befindet, wo die JVM, von der ich weiß, dass sie 64-bit ist, liegt. Achten Sie darauf, dass der bin
-Ordner dort liegt.
(Als Bonus können Sie unter Windows 7 auch die Registerkarte anheften, weshalb ich dies für meinen eigenen Gebrauch tun musste)