Heim Java javaLernprogramm Beispielanalyse von Speicherproblemen bei der Konfiguration von eclipse.ini in Java

Beispielanalyse von Speicherproblemen bei der Konfiguration von eclipse.ini in Java

Apr 26, 2017 am 10:09 AM
eclipse

Dieser Artikel ist eine detaillierte Analyse und Einführung in das Problem der eclipse.ini-Speichereinstellungen. Freunde in Not können sich darauf beziehen

-vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M
Hier gibt es mehrere Fragen:
1 Was bedeutet jedes? Parameter?
2. Warum kann Eclipse auf einigen Maschinen starten, nachdem ich sowohl -Xmx als auch -XX:MaxPermSize auf 512M gesetzt habe, aber auf einigen Maschinen nicht?
3. Warum führt Eclipse beim Schreiben der oben genannten Parameter in die Datei eclipse.ini nicht die entsprechenden Einstellungen durch?
Beantworten wir sie einzeln
1 Was bedeuten die einzelnen Parameter?
-vmargs im Parameter bedeutet das Festlegen von JVM-Parametern. Im Folgenden handelt es sich also tatsächlich um JVM-Parameter. Wir verstehen zunächst den Mechanismus der JVM-Speicherverwaltung und erklären dann die Bedeutung jedes Parameters.
Heap- und Nicht-Heap-Speicher
Gemäß der offiziellen Aussage: „Die Java Virtual Machine verfügt über einen Heap. Der Heap ist der Laufzeitdatenbereich, und der Speicher aller Klasseninstanzen und Arrays wird von hier aus zugewiesen.“ Der Heap wird beim Start der Java Virtual Machine erstellt. „Der Speicher außerhalb des Heaps in der JVM wird als Nicht-Heap-Speicher bezeichnet.“ Es ist ersichtlich, dass die JVM hauptsächlich zwei Arten von Speicher verwaltet: Heap und Nicht-Heap. Einfach ausgedrückt ist der Heap der Speicher, auf den Java-Code zugreifen kann und der für Entwickler reserviert ist. Der Nicht-Heap ist der Speicher, der für die eigene Verwendung der JVM reserviert ist, also der Speicher, der für die interne Verarbeitung oder Optimierung des Methodenbereichs und der JVM erforderlich ist (z. B JIT-Cache für kompilierten Code), jede Klassenstruktur (z. B. der Laufzeitkonstantenpool, Feld- und Methodendaten) und der Code für Methoden und Konstruktoren befinden sich alle im Off-Heap-Speicher.
Heap-Speicherzuweisung
Der von der JVM zugewiesene anfängliche Speicher wird durch -Xms angegeben, und der Standardwert ist 1/64 des von der JVM zugewiesenen maximalen Speichers, der durch -Xmx angegeben wird beträgt 1/4 des physischen Speichers. Wenn der freie Heap-Speicher weniger als 40 % beträgt, erhöht die JVM den Heap standardmäßig bis zur Höchstgrenze von -Xmx. Wenn der freie Heap-Speicher größer als 70 % ist, reduziert die JVM den Heap bis zur Mindestgrenze von -Xms. Daher setzt der Server im Allgemeinen -Xms und -Xmx auf den gleichen Wert, um eine Anpassung der Heap-Größe nach jedem GC zu vermeiden.
Nicht-Heap-Speicherzuweisung
JVM verwendet -XX:PermSize, um den Anfangswert des Nicht-Heap-Speichers festzulegen. Der Standardwert ist 1/64 des physischen Speichers. XX:MaxPermSize legt die maximale Größe des Nicht-Heap-Speichers fest , der Standardwert ist 1/64 des physischen Speichers /4.
JVM-Speicherlimit (Maximalwert)
Zuallererst ist der JVM-Speicher auf den tatsächlichen maximalen physischen Speicher begrenzt (Unsinn! Haha). Unter der Annahme, dass der physische Speicher unendlich ist, hat der maximale Wert des JVM-Speichers viel was mit dem Betriebssystem zu tun hat. Vereinfacht ausgedrückt beträgt der steuerbare Speicherplatz eines 32-Bit-Prozessors zwar 4 GB, das jeweilige Betriebssystem legt jedoch eine Grenze fest. Diese Grenze liegt im Allgemeinen bei 2 GB bis 3 GB (im Allgemeinen sind es 1,5 GB bis 2 GB unter Windows-Systemen und 1,5 GB). (G-2G unter Linux-Systemen). 2G-3G), und es wird keine Einschränkungen für Prozessoren über 64 Bit geben.
2. Warum kann Eclipse auf einigen Maschinen starten, nachdem ich sowohl -Xmx als auch -XX:MaxPermSize auf 512M gesetzt habe, während auf einigen Maschinen dies nicht möglich ist?
Durch die obige Einführung in die JVM-Speicherverwaltung haben wir erfahren, dass es zwei Arten von JVM-Speicher gibt: Heap-Speicher und Nicht-Heap-Speicher. Darüber hinaus hängt der maximale Speicher von JVM zunächst vom tatsächlichen physischen Speicher und dem Betriebssystem ab. Daher das Festlegen von VM-Parametern führt hauptsächlich aus folgenden Gründen dazu, dass das Programm nicht gestartet werden kann:
1) Der Wert von -Xms im Parameter ist größer als -Xmx, oder der Wert von - XX:PermSize ist größer als -XX :MaxPermSize;
2) Die Summe der Werte von -Xmx und -XX:MaxPermSize überschreitet die maximale Grenze des JVM-Speichers, z. B. die maximale Speichergrenze des aktuellen Betriebssystems, oder tatsächlicher physischer Speicher usw. Apropos tatsächlicher physischer Speicher: Wenn Ihr Speicher 1024 MB groß ist, werden möglicherweise nicht 1024 MB im tatsächlichen System verwendet, da ein Teil davon von der Hardware belegt ist.
3. Warum führt Eclipse beim Schreiben der oben genannten Parameter in die Datei eclipse.ini nicht die entsprechenden Einstellungen durch?
Warum ist dann derselbe Parameter in der Verknüpfung oder Befehlszeile gültig, aber in der Datei eclipse.ini ungültig? Dies liegt daran, dass wir die Einstellungsregeln der Datei eclipse.ini nicht befolgt haben:
Die Parameter haben die Form „Elementwert“. Wenn in der Mitte Leerzeichen vorhanden sind, müssen sie in eine neue Zeile geschrieben werden. Wenn der Wert Leerzeichen enthält, müssen diese in doppelte Anführungszeichen gesetzt werden. Zum Beispiel verwenden wir den Parameter -vm C:Javajre1.6.0binjavaw.exe, um die virtuelle Maschine einzurichten. In der Datei eclipse.ini sollte er wie folgt geschrieben werden:
-vm
C :Javajre1.6.0binjavaw.exe
Wie oben erwähnt, können die endgültigen Parameter in eclipse.ini wie folgt geschrieben werden:
-vmargs
-Xms128M
-Xmx512M
-XX :PermSize=64M
-XX :MaxPermSize=128M
Die tatsächlichen Laufergebnisse können über die Schaltfläche „Konfigurationsdetails“ im Fenster „Hilfe“ – „Über Eclipse SDK“ in Eclipse angezeigt werden.
Es sollte auch beachtet werden, dass der Inhalt der eclipse.ini-Datei, die mit dem komprimierten Eclipse-Paket geliefert wird, wie folgt lautet:
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
-vmargs
-Xms40m
-Xmx256m
Darunter haben die Parameter –launcher.XXMaxPermSize (beachten Sie, dass es vorne zwei Verbindungslinien gibt) und -XX:MaxPermSize grundsätzlich die gleiche Bedeutung Ich denke, der einzige Unterschied besteht darin, dass ersterer der Parameter ist, der beim Start von eclipse.exe festgelegt wird, während letzterer der Parameter in der von Eclipse verwendeten JVM ist. Legen Sie einfach eine der beiden fest, sodass Sie hier –launcher.XXMaxPermSize und die nächste Zeile mit # auskommentieren können.
3. Andere Startparameter. Wenn Sie eine Dual-Core-CPU haben, können Sie diesen Parameter ausprobieren:
-XX:+UseParallelGC
, um die GC-Ausführung zu beschleunigen. (Nur ein neu hinzugefügter Parameter für GC in JDK 5)

Das obige ist der detaillierte Inhalt vonBeispielanalyse von Speicherproblemen bei der Konfiguration von eclipse.ini in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Perfekte Zahl in Java Perfekte Zahl in Java Aug 30, 2024 pm 04:28 PM

Leitfaden zur perfekten Zahl in Java. Hier besprechen wir die Definition, Wie prüft man die perfekte Zahl in Java?, Beispiele mit Code-Implementierung.

Weka in Java Weka in Java Aug 30, 2024 pm 04:28 PM

Leitfaden für Weka in Java. Hier besprechen wir die Einführung, die Verwendung von Weka Java, die Art der Plattform und die Vorteile anhand von Beispielen.

Smith-Nummer in Java Smith-Nummer in Java Aug 30, 2024 pm 04:28 PM

Leitfaden zur Smith-Zahl in Java. Hier besprechen wir die Definition: Wie überprüft man die Smith-Nummer in Java? Beispiel mit Code-Implementierung.

Fragen zum Java Spring-Interview Fragen zum Java Spring-Interview Aug 30, 2024 pm 04:29 PM

In diesem Artikel haben wir die am häufigsten gestellten Fragen zu Java Spring-Interviews mit ihren detaillierten Antworten zusammengestellt. Damit Sie das Interview knacken können.

Brechen oder aus Java 8 Stream foreach zurückkehren? Brechen oder aus Java 8 Stream foreach zurückkehren? Feb 07, 2025 pm 12:09 PM

Java 8 führt die Stream -API ein und bietet eine leistungsstarke und ausdrucksstarke Möglichkeit, Datensammlungen zu verarbeiten. Eine häufige Frage bei der Verwendung von Stream lautet jedoch: Wie kann man von einem Foreach -Betrieb brechen oder zurückkehren? Herkömmliche Schleifen ermöglichen eine frühzeitige Unterbrechung oder Rückkehr, aber die Stream's foreach -Methode unterstützt diese Methode nicht direkt. In diesem Artikel werden die Gründe erläutert und alternative Methoden zur Implementierung vorzeitiger Beendigung in Strahlverarbeitungssystemen erforscht. Weitere Lektüre: Java Stream API -Verbesserungen Stream foreach verstehen Die Foreach -Methode ist ein Terminalbetrieb, der einen Vorgang für jedes Element im Stream ausführt. Seine Designabsicht ist

Zeitstempel für Datum in Java Zeitstempel für Datum in Java Aug 30, 2024 pm 04:28 PM

Anleitung zum TimeStamp to Date in Java. Hier diskutieren wir auch die Einführung und wie man Zeitstempel in Java in ein Datum konvertiert, zusammen mit Beispielen.

Java -Programm, um das Kapselvolumen zu finden Java -Programm, um das Kapselvolumen zu finden Feb 07, 2025 am 11:37 AM

Kapseln sind dreidimensionale geometrische Figuren, die aus einem Zylinder und einer Hemisphäre an beiden Enden bestehen. Das Volumen der Kapsel kann berechnet werden, indem das Volumen des Zylinders und das Volumen der Hemisphäre an beiden Enden hinzugefügt werden. In diesem Tutorial wird erörtert, wie das Volumen einer bestimmten Kapsel in Java mit verschiedenen Methoden berechnet wird. Kapselvolumenformel Die Formel für das Kapselvolumen lautet wie folgt: Kapselvolumen = zylindrisches Volumenvolumen Zwei Hemisphäre Volumen In, R: Der Radius der Hemisphäre. H: Die Höhe des Zylinders (ohne die Hemisphäre). Beispiel 1 eingeben Radius = 5 Einheiten Höhe = 10 Einheiten Ausgabe Volumen = 1570,8 Kubikeinheiten erklären Berechnen Sie das Volumen mithilfe der Formel: Volumen = π × R2 × H (4

Gestalten Sie die Zukunft: Java-Programmierung für absolute Anfänger Gestalten Sie die Zukunft: Java-Programmierung für absolute Anfänger Oct 13, 2024 pm 01:32 PM

Java ist eine beliebte Programmiersprache, die sowohl von Anfängern als auch von erfahrenen Entwicklern erlernt werden kann. Dieses Tutorial beginnt mit grundlegenden Konzepten und geht dann weiter zu fortgeschrittenen Themen. Nach der Installation des Java Development Kit können Sie das Programmieren üben, indem Sie ein einfaches „Hello, World!“-Programm erstellen. Nachdem Sie den Code verstanden haben, verwenden Sie die Eingabeaufforderung, um das Programm zu kompilieren und auszuführen. Auf der Konsole wird „Hello, World!“ ausgegeben. Mit dem Erlernen von Java beginnt Ihre Programmierreise, und wenn Sie Ihre Kenntnisse vertiefen, können Sie komplexere Anwendungen erstellen.

See all articles