Ich möchte dies verstehen, aber wenn ich Max Heap-Größe festlegen, erstellt jeder Thread in einer Multithread-Umgebung ihren eigenen Heap und hat die gleiche Größe?Wird Heap für mehrere Threads freigegeben?
Antwort
... erstellt jeder Thread in einer Multithread-Umgebung einen eigenen Heap und hat dieselbe Größe?
Nein. Es gibt einen einzelnen Heap, der von allen Threads im Java-Prozess gemeinsam genutzt wird.
Es ist möglich, eine JVM mit TLABs (lokale Threadzuweisungspuffer) auszuführen, um die Zuordnungskonflikte in einer Multithread-Anwendung zu reduzieren. Dies sind jedoch nur Regionen mit dem Eden-Space des Java-Heaps. Nicht getrennte Haufen. Außerdem werden die Objekte nach Bedarf vom GC nach Bedarf verschoben.
Referenzen:
Themen des gleichen Prozess der gleichen virtuellen Speicher und die Heap.
Tatsächlich kann Speichermanager lokale Speicherpools für jeden einzelnen Thread beibehalten. Es versucht, die Pools auszugleichen. Dies geschieht "unter der Haube" als Optimierung und ist für Sie unsichtbar, so dass Threads den gesamten dem Prozess zugewiesenen Heap verwenden.
- 1. Ist das Mapper-Objekt von Hadoop für mehrere Threads freigegeben?
- 2. Wenn/Wann wird der freigegebene Heap-Speicher freigegeben?
- 3. Haben Threads einen eindeutigen Heap?
- 4. Warum teilen Threads den Heap-Speicher?
- 5. Stapel von abgetrennten Threads nie freigegeben
- 6. boost :: threads Beispiel und heap Korruption Nachricht
- 7. Wird Threadpool zwischen Anwendungsdomänen freigegeben?
- 8. UITableViewHeaderFooterView wird nicht freigegeben, wenn UITableView freigegeben wird
- 9. SQL-Verbindung wird freigegeben
- 10. Speicher wird nicht freigegeben
- 11. Wenn Heap erstellt wird, ist Heap eindeutig?
- 12. Wie kann ich mehrere Threads abbrechen?
- 13. Heap-Korruptionsfehler; cv :: Mat opencv kann nicht freigegeben werden
- 14. Best Practices für mehrere Threads und Persistenzen
- 15. Warte mehrere Threads für ein Ergebnis
- 16. mehrere Threads gleichzeitig
- 17. Sächsischer Speicher wird nicht freigegeben
- 18. Java-Map-Cache für mehrere Threads
- 19. Feder StateMachine für mehrere Threads gleichzeitig
- 20. Mehrere Threads gleichzeitig ausführen
- 21. Java verliert Speicher beim Freigeben von Threads aus dem Heap
- 22. Virtueller Speicher wird nie freigegeben
- 23. Speicher wird nicht korrekt freigegeben?
- 24. SpriteKit-Szene wird nicht freigegeben
- 25. Mehrere unendliche Threads
- 26. Mehrere Threads mit Timern
- 27. UImage-Speicher wird nicht freigegeben VM: ImageIO_JPEG_DATA?
- 28. mehrere Threads Druckwert zusammen
- 29. Mehrere Dateizugriffe mit Threads
- 30. Mehrere Threads in Docker Container
Der Heap wird unter allen Threads geteilt – TheLostMind
Ja, es ist unter allen Threads geteilt https://docs.oracle.com/cd/E13150_01/jrockit_jvm/jrockit/geninfo/diagnos/garbage_collect.html – user3159253