2016-09-23 4 views
1

Können wir Heap-Speicher mehr als physischen RAM auf System zu Java-Prozess geben.können wir Festplattenspeicher für JVM-Speicher verwenden

Beispiel. System hat 8 GB RAM. Betriebssystem verbraucht sagen wir mal 2 GB RAM Wir Java process1 beginnen und zuteilen 4 gb ram Wir Java process2 beginnen und zuteilen 4 gb ram

Wenn der Platz im RAM nicht verfügbar ist, dann Java-Prozess Festplatten-Cache verwendet für das Speichern Unbenutzter Teil programmatisch im Speicher.

+0

es wäre schrecklich langsam –

+0

Für mich ist es zur Zeit okay, wenn es langsam ist ... ist es möglich, es zu tun? –

+2

Es heißt "Swapping" und ist seit langem ein Standardmerkmal von Betriebssystemen. –

Antwort

0
  1. sollten Sie daran denken, dass -Xmx Einstellung nicht ganze Speicher ist die JVM zuweist. Es ist nur die Größe des Heaps (Platz für Objekte) und etwas mehr Speicherplatz wird ebenfalls zugewiesen. Für -Xmx4G kann die gesamte Speicherzuweisung beispielsweise 5 GB betragen.
  2. Sie können JVM-Speicher in die Festplatte tauschen, aber dann wird Ihre JVM wirklich langsam sein. Der Garbage Collector während der Bereinigung des Speichers muss oft den gesamten Speicher scannen (selbst sehr selten genutzte Bereiche), so dass er während der GC-Zyklen viel austauscht.
+0

Heute können wir sicher davon ausgehen, dass die SSD mit mindestens 500 MB/s gut lesbar ist. Server-Klasse geht weit über 1 GB/s. –

+0

@MarkoTopolnik Es ist RW-Zugriff nicht schreibgeschützt. Und moderner RAM kann mehr als 10 GB/s verarbeiten, so dass der Unterschied enorm ist. –

+0

Realistisch wird es aufgrund aller Zeigerjagd und Verzweigungsfehlvorhersagen weniger als 10 GB/s sein. Und 10x langsamer ist immer noch kein großer Unterschied in Anbetracht der allgemeinen Erwartungen, was die Performance anbelangt. –

Verwandte Themen