Ich bin im Begriff, eine Anwendung auf einem Live-Server zu implementieren und jetzt bin ich an dem Teil, wo ich Heap und Permgen Größen für die jvm festlegen müssen. Ich habe viele Artikel gesehen und alle von ihnen sagen, "die minimale Größe des Heapspeichers auf (einige Anzahl)" und "legen Sie die maximale Größe des Heapspeichers auf (einige Anzahl)", aber keiner dieser Artikel sagt wirklich warum Die minimale Heap-Größe muss festgelegt werden. Ich verstehe den Grund, die maximale Größe des Heapspeichers festzulegen, aber nicht das Minimum. Ich wäre dankbar, wenn Sie etwas Licht in diese Sache bringen würden.Muss ich Java Minimum Heap Größe wirklich definieren
Antwort
Der Heap in Java ist der allgemeine Speicherzuordnungsbereich. Nehmen wir an, dass wir die minimale Heap-Größe auf 1000 Byte setzen (das ist eine absurd niedrige Zahl). Jetzt sagen wir, dass ich ein Objekt in meinem Programm instanziiere, das Text enthält, der zweitausend Zeichen lang ist. Ich kann dieses Objekt nicht speichern, ohne zuerst meine Heap-Größe zu erweitern. Jetzt ist vermutlich mein maximaler Heap-Parameter groß genug, um dies zuzulassen - aber das ist der Grund, um die maximale Heap-Größe zu setzen.
Angenommen, mein Server hat 4G RAM, und ich habe die minimale Heap-Größe darauf eingestellt. (Eine absurd große Zahl.) Wenn keine anderen Programme Speicher belegen, würde das funktionieren. Wenn ich jedoch einen zweiten Prozess mit meinem Java-Programm starten würde, wäre es nicht in der Lage, genügend Speicher zuzuweisen und zu beenden.
Die minimale Größe macht zwei Dinge für Sie; Erstens macht es Speicher schnell verfügbar, um einen schnellen Start zu ermöglichen. Zweitens können Sie Ihren jvm so einstellen, dass Sie einige Invarianten haben, mit denen Sie Vorhersagen treffen können, wie viele Prozesse Sie ausführen können. Wenn Ihre minimale Heap-Größe zu groß ist, verschwenden Sie wahrscheinlich Speicher für einen Prozess, der nie so viel benötigt, wodurch die Kapazität Ihres Systems begrenzt wird. Wenn Sie es zu klein einstellen, dauert das Starten von Programmen sehr lange, was sich negativ auf die Prozessleistung auswirkt.
Wenn Sie eine minimale Heap-Größe festlegen, kann Java etwas Speicherplatz reservieren, was die Startzeit verbessert.
Das explizite Festlegen der Mindestgröße (über der Standardvorgabe) hilft bei der Zuordnungsfragmentierung auf Betriebssystemebene und der Startzeitleistung.
Der Java-Heap wird durch vom Betriebssystem zugewiesenen Speicher unterstützt, je größer der anfängliche Block, desto weniger Neuzuordnung und Fragmentierung.
Wenn das Minimum auf das Maximum oder fast auf das Maximum eingestellt wird, werden diese Situationen vollständig beseitigt.
- 1. Wirklich Minimum Lisp
- 2. Erhöhen Sie die Java-Heap-Größe dauerhaft?
- 3. Java Heap-Größe amxmlc ohne ant
- 4. Neo4j Heap Größe
- 5. Wie Java-Heap-Größe programmgesteuert zu erhöhen
- 6. Sonar Findbugs Heap Größe
- 7. Java-Heap-Speicher in Netbeans .. aber ich habe die Heap-Größe bereits erhöht!
- 8. -Xms: Erste Heap-Größe oder minimale Heap-Größe?
- 9. Wie wählt man die jvm-Heap-Größe?
- 10. Muss ich wirklich meine Datenbank normalisieren?
- 11. Muss ich wirklich diesen "SerializationHelper" schreiben?
- 12. JAVA_OPTS für zunehmende Heap-Größe
- 13. Ist ein PHP SplHeap wirklich ein Heap?
- 14. Erhöhen Sie die Java-Heap-Größe dauerhaft nach dem Neustart?
- 15. . NET-Generation 0 Heap-Größe
- 16. Java resize Heap Frage
- 17. muss ich die Größe setzen Bild 150x130
- 18. Java.lang.OutOfMemory Java Heap Space JDeveloper
- 19. definieren präzise Größe Speicherstrukturen
- 20. Set Standard-Heap-Größe in Windows
- 21. Java-Webstart-Heap-Dump
- 22. Android Heap Größe und SoftReferenzen
- 23. Regarind einer Heap-Größe Fehler
- 24. Warum YARN Java Heap Speicherplatzfehler?
- 25. javac Standard-Heap-Größe für Java fest eingestellt
- 26. anpassen Java-Heap-Größe auf Google Compute Engine Instanzen
- 27. Fehler Java Heap Größe in Android Studio 1.3.1
- 28. Wie die Größe eines Java-Heap zu beheben
- 29. Festlegen der JVM-Heap-Größe zur Laufzeit
- 30. Java größte Objektgröße in Heap
Nun, warum würden Sie eine untere Grenze für irgendetwas setzen? Weil Ihr Programm möglicherweise einen bestimmten Betrag erfordert. Missverstehe ich die Frage? Meinst du, dass die Einstellung min tatsächlich benötigt wird? – keyser
mögliches Duplikat von [Was ist der Grund, eine minimale Java-Heap-Größe festzulegen?] (Http://stackoverflow.com/questions/8085949/whats-the-reason-to-set-a-minimal-java-heap-size) – assylias