Als «garbage-collection» getaggte Fragen

2
Wie unterschiedlich ist die Müllabfuhr in reinen Sprachen?
In einer reinen Sprache wie Haskell sind alle Daten unveränderlich und vorhandene Datenstrukturen können in keiner Weise geändert werden. Darüber hinaus erzeugen viele Algorithmen für unveränderliche Daten und funktionale Programmiermuster von Natur aus große Mengen an Müll ( mapz. B. Ketten zur Erstellung von Zwischenlisten). Welche Strategien und Techniken setzen …

6
Warum verwendete das Team von LMAX Java und entwarf die Architektur, um GC um jeden Preis zu vermeiden?
Warum hat das Team von LMAX den LMAX-Disruptor in Java entwickelt, aber all seine Konstruktionsaspekte zielen darauf ab, den GC-Einsatz zu minimieren? Wenn man GC nicht ausführen lassen möchte, warum sollte man dann eine Garbage-Collected-Sprache verwenden? Ihre Optimierungen, das Niveau der Hardware-Kenntnisse und der Gedanke, den sie setzen, sind einfach …

9
Was sind die Komplexitäten der speicherunverwalteten Programmierung?
Oder mit anderen Worten, welche spezifischen Probleme hat die automatisierte Speicherbereinigung gelöst? Ich habe noch nie Low-Level-Programmierung durchgeführt, daher weiß ich nicht, wie kompliziert es sein kann, Ressourcen freizugeben. Die Art von Fehlern, die GC anspricht, scheint (zumindest für einen externen Beobachter) die Art von Dingen zu sein, die ein …



6
Wie verhindert ein Garbage Collector, dass der gesamte Speicher bei jeder Erfassung gescannt wird?
Einige (zumindest Monos und .NETs) Garbage Collectors haben einen Kurzzeitspeicherbereich, den sie häufig durchsuchen, und einen sekundären Speicherbereich, den sie seltener durchsuchen. Mono nennt das einen Kindergarten. Um herauszufinden, welche Objekte entsorgt werden können, scannen sie alle Objekte, beginnend mit Wurzeln, dem Stapel und den Registern, und entsorgen alle Objekte, …


3
Würde die Verwendung einer Hash-Tabelle in der Garbage Collection das weltweite Problem von Mark und Sweep lösen?
Im Mark-Sweep-Compact-Garbage-Collection-Algorithmus müssen Sie die Welt stoppen, wenn Sie Objekte verschieben, da das Referenzdiagramm inkonsistent wird und Sie die Werte aller Referenzen ersetzen müssen, die auf das Objekt verweisen. Aber was wäre, wenn Sie eine Hash-Tabelle mit einer Objekt-ID als Schlüssel und einem Zeiger als Wert hätten und Referenzen auf …


4
Welche Algorithmen stehen hinter der Low-Pause-GC?
Einige Sprachen, zum Beispiel Java, führten eine Low-Pause-GC ein. Diese GC können den größten Teil der Arbeit erledigen, ohne die ganze Welt anzuhalten. Dies ist offensichtlich ein ziemlich schwieriges Problem, da es erforderlich ist, den Speicher zu analysieren, wenn der Thread geändert wird. Dies führt dazu, dass Daten zu Beginn …

5
Ein Referenzzählmuster für speicherverwaltete Sprachen?
Java und .NET verfügen über wunderbare Garbage Collectors, die den Speicher für Sie verwalten, und über praktische Muster zum schnellen Freigeben externer Objekte ( Closeable, IDisposable), jedoch nur, wenn sie einem einzelnen Objekt gehören. In einigen Systemen muss eine Ressource möglicherweise unabhängig von zwei Komponenten verwendet und nur freigegeben werden, …


3
Warum unterstützen mobile Plattformen keine Speicherbereinigung für Generationen?
Sowohl Windows Phone / Xbox als auch Android unterstützen die Speicherbereinigung von Generationen nicht. Dies ist für viele Programmierer frustrierend. Es scheint einen legitimen technischen Grund dafür zu geben, aber ich kann es nicht herausfinden. Aktuelle Telefone haben mehr Speicher und wahrscheinlich bessere CPUs als die Desktops / Laptops, auf …

4
Ist nicht deterministisches Ressourcenmanagement eine undichte Abstraktion?
Soweit ich sehen kann, gibt es zwei allgegenwärtige Formen des Ressourcenmanagements: deterministische Zerstörung und explizite. Beispiele für Ersteres wären C ++ - Destruktoren und intelligente Zeiger oder Perls DESTROY-Sub, während ein Beispiel für Letzteres Rubys Block-to-Management-Ressourcen-Paradigma oder die IDispose-Schnittstelle von .NET wäre. Neuere Sprachen scheinen sich für Letzteres zu entscheiden, …

4
Speicherverwaltung für die schnelle Nachrichtenübermittlung zwischen Threads in C ++
Angenommen, es gibt zwei Threads, die durch asynchrones Senden von Datennachrichten aneinander kommunizieren. Jeder Thread hat eine Art Nachrichtenwarteschlange. Meine Frage ist sehr niedrig: Was kann erwartet werden, um den Speicher am effizientesten zu verwalten? Ich kann mir mehrere Lösungen vorstellen: Der Absender erstellt das Objekt über new. Empfängeranrufe delete. …

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.