Heim > Artikel > Backend-Entwicklung > Detaillierte Erläuterung der Obergrenze von 2 GB für den JVM-Speicher in Linux-Systemen
Die JVMs, die wir normalerweise verwenden, sind alle 32-Bit (64-Bit-JVM verliert 10-20 % an Leistung und wird im Allgemeinen nicht empfohlen), und der Adressraum von 32-Bit-Programmen sollte 4 GB betragen. Warum unter Linux? Der JVM-Speicher kann nur 2 GB nutzen?
Nachdem ich mit dem JDK-Forschungs- und Entwicklungsteam kommuniziert habe, habe ich endlich einige damit zusammenhängende Gründe herausgefunden. Dieses Problem besteht in einigen frühen Linux-Versionen, insbesondere in Versionen vor Kernel 2.5. Versionen nach 2.6 haben dieses Problem grundsätzlich nicht. Es stellt sich heraus, dass diese Linux-Versionen ein Speicherlimit von 2 GB für Prozesse haben, was die Obergrenze der Größe eines Speicherblocks mit zusammenhängenden Adressen darstellt, und die Heap-Größe der JVM einen zusammenhängenden Adressraum erfordert. Daher sind 2 GB die theoretische Verwendung des Java-Prozesses.
Wenn die Java-Anwendung größeren Speicher benötigt, wird empfohlen, eine neuere Version von Linux zu verwenden oder die Konfiguration des Speicherverhältnisses zwischen Linux-Anwendung und Kernel auf 3 GB:1 GB zu ändern. Es besteht auch die Möglichkeit, ein UNIX-Betriebssystem wie Solaris zu wählen. Betriebssysteme wie Solaris haben keine 2-GB-Beschränkung für die JVM-Speicherverwaltung, daher kann die Heap-Größe auf etwa 3,5 bis 3,6 GB eingestellt werden.
Ausführlichere Erläuterungen zur 2-GB-Obergrenze des JVM-Speichers in Linux-Systemen finden Sie auf der chinesischen PHP-Website!