Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Offiziell, ja. Inoffiziell deutet vieles darauf hin, dass es sie gibt:
Es gibt ein hinreichendes und umfassendes Indiz dafür, dass es in emcool keinen Müllsammler gibt - Löschen ist nach Neuem Pflicht.
Es gibt ein hinreichendes Indiz dafür, dass es in emcool keinen Müllsammler gibt - Löschen ist nach Neuem Pflicht.
Soweit ich mich erinnere, hat einer der Entwickler eingeräumt, dass es eine Müllabfuhr gibt. Aber für den Benutzer existiert sie "irgendwie nicht".
Nun, was das neu-gelöschte Paar angeht - ich bin dafür. Im Allgemeinen müssen die Objekte, die Ressourcen angefordert haben, für diese verantwortlich sein. Es gibt Ausnahmen, wie z.B. die "Objektfabrik" - dort wird aber ausdrücklich davon ausgegangen, dass die Verantwortung für die erstellten Objekte bei demjenigen liegt, der diese Objekte bei der Fabrik angefordert hat.
Ich mag die Situation in Sprachen nicht, in denen es etwas Neues gibt und das Löschen nicht erforderlich ist, da "das System unnötige Dinge entfernt". Dies kann nicht nur die Leistung verringern (wenn überflüssige Objekte noch nicht entfernt wurden), sondern auch den Programmierer entlasten, da er sich nicht um die Folgen seines Handelns kümmern muss.
Ich mag die Situation in den Sprachen wirklich nicht, in denen "neu" vorhanden ist, aber "löschen" nicht erforderlich ist, weil das System "Unnötiges" entfernt. Dies kann nicht nur die Leistung verringern (wenn überflüssige Objekte noch nicht entfernt wurden), sondern auch den Programmierer entlasten, da er sich nicht um die Folgen seines Handelns kümmern muss.
Andererseits wird die Produktivität im Allgemeinen verbessert. Die manuelle Entfernung nimmt viel Zeit im Hauptstrang in Anspruch. + Die Löschung erfolgt Element für Element. Vergleichen Sie z. B. die beiden Versionen des Skripts in diesem Thread. Der Geschwindigkeitsunterschied beträgt mehrere Male. Auch die Speichereffizienz steigt. Denn die Müllabfuhr bewegt Gegenstände, die miteinander verdichtet sind. Wenn Sie es manuell verwalten, entstehen freie Speicherlöcher, die nicht so einfach wiederverwendet werden können. Außerdem arbeitet der Garbage Collector in einem anderen Thread. Grundlegende Zeit wird nicht verschwendet. Alles in allem: ein Plus.
Die Produktivität hingegen wird im Allgemeinen gesteigert. Die manuelle Entfernung nimmt im Hauptstrom sehr viel Zeit in Anspruch. + Die Löschung erfolgt Element für Element. Vergleichen Sie z. B. zwei Versionen des Skripts in diesem Thread. Der Geschwindigkeitsunterschied beträgt mehrere Male. Auch die Speichereffizienz steigt. Denn die Müllabfuhr bewegt Gegenstände, die miteinander verdichtet sind. Wenn Sie es manuell verwalten, entstehen freie Speicherlöcher, die nicht so einfach wiederverwendet werden können. Außerdem arbeitet der Garbage Collector in einem anderen Thread. Grundlegende Zeit wird nicht verschwendet. Alles in allem ist das nur ein Pluspunkt.
Vasily, es tut mir leid, aber Sie verstehen überhaupt nicht, worüber Sie zu sprechen versuchen. Überhaupt nicht und in keiner Weise.
Lesen Sie wenigstens bei Wikipedia nach, was ein Müllsammler ist. Seine Hauptbesonderheit besteht darin, dass er Objekte entfernt, mit denen die Kommunikation verloren gegangen ist.
Nur dass er in diesem Fall als Müllsammler bezeichnet würde. Diese beiden Drehbücher stammen aus einer anderen Geschichte. Das Geschenk Gottes ist nicht mit einem Ei zu verwechseln.
Und warum sollte ein Garbage Collector plötzlich die Produktivität steigern? Es ist ein weiteres Polster zwischen dem nützlichen Code und der Hardware, und kein schwaches noch dazu.
Soweit ich mich erinnere, hat einer der Entwickler zugegeben, dass es einen Müllsammler gibt. Aber für den Nutzer ist es "irgendwie weg".
///
Dies muss der "Garbage Collector" sein, der am Ende der Arbeit eine Meldung über ein Speicherleck ausgibt.
Vielleicht löscht es sogar verlassene Objekte. Aber selbst wenn sie beseitigt werden, gibt es eine große
Unterschied - sie werden erst am Ende des Auftrags gelöscht. Und wenn in einem mehrtausendfachen Zyklus neue Objekte geschaffen werden?
neue Objekte? Das Programm ist nicht funktionsfähig, da nicht genügend Speicher vorhanden ist.
Ein echter Assembler löscht verlorene Objekte während des Programmablaufs, nicht
erst am Ende des Programms. Deshalb ist ein besonderer Programmierstil erlaubt.
können wir Objekte unter beliebigen Bedingungen und in beliebiger Menge multiplizieren.
Die Produktivität hingegen wird im Allgemeinen gesteigert. Die manuelle Entfernung nimmt im Hauptstrom sehr viel Zeit in Anspruch. + Die Löschung erfolgt Element für Element. Vergleichen Sie z. B. zwei Versionen des Skripts in diesem Thread. Der Geschwindigkeitsunterschied beträgt mehrere Male. Auch die Speichereffizienz steigt. Denn die Müllabfuhr bewegt Gegenstände, die miteinander verdichtet sind. Wenn Sie es manuell verwalten, entstehen freie Speicherlöcher, die nicht so einfach wiederverwendet werden können. Außerdem arbeitet der Garbage Collector in einem anderen Thread. Grundlegende Zeit wird nicht verschwendet. Alles in allem: ein Plus.
Hmm ... Und in einem Müllsammler ist die Löschung nicht elementar? Ganz zu schweigen davon, dass der andere Thread, wenn keine freien Kerne vorhanden sind, von demselben Kern ausgeführt wird und den Hauptthread verlangsamt.
Meiner Meinung nach ist die Beseitigung von Müll durch den Benutzer bei sorgfältiger Überlegung immer effizienter als die Beseitigung durch den Garbage Collector. Wenn Sie sich jedoch nicht darum kümmern, gewinnt der Müllsammler auf jeden Fall.
Das ist der Grund, warum ich den Garbage Collector nicht mag, weil er die gleiche gleichgültige Behandlung von Ressourcen fördert.
Dies muss der "Assembler" sein, der die Meldung über Speicherlecks ausgibt, wenn der Auftrag beendet ist.
Wahrscheinlich werden dabei sogar übrig gebliebene Objekte gelöscht. Aber selbst wenn er sie löscht, gibt es eine große
Unterschied - sie werden erst am Ende des Auftrags gelöscht. Und wenn in einem mehrtausendfachen Zyklus neue Objekte geschaffen werden?
neue Objekte? Das Programm ist nicht funktionsfähig, da nicht genügend Speicher vorhanden ist.
Ein echter Assembler löscht verlorene Objekte während des Programmablaufs, nicht
erst am Ende des Programms. Deshalb ist ein besonderer Programmierstil erlaubt.
können wir Objekte unter beliebigen Bedingungen und in beliebiger Menge multiplizieren.
Das ist richtig. Das ist der Grund, warum ich nicht gerne mit Assembler arbeite - der Benutzer achtet nicht darauf, wie viele Objekte er/sie wo erstellt hat.
Im Grunde genommen vereinfacht es sogar die Entwicklung in gewisser Weise - man muss nicht daran denken, die belegte Datei zu löschen. Builder findet den Zeitpunkt, an dem das Objekt nicht mehr referenziert wird, und entfernt es. Aber diese Position ekelt mich an. Aus diesem Grund laufen die Programme immer langsamer und benötigen immer mehr und leistungsfähigere Hardware-Ressourcen für ähnlich komplexe Aufgaben.
Vasily, es tut mir leid, aber Sie verstehen überhaupt nicht, was Sie zu argumentieren versuchen. Überhaupt nicht und in keiner Weise.
Hmmm... Und im Müllsammler ist die Löschung nicht elementar? Ganz zu schweigen von der Tatsache, dass ein anderer Thread, wenn keine Kerne frei sind, von demselben Kern ausgeführt wird und den Hauptthread verlangsamt.
Meiner Meinung nach ist die Beseitigung von Müll durch den Benutzer bei sorgfältiger Überlegung immer effizienter als die Beseitigung durch den Garbage Collector. Wenn Sie sich jedoch nicht darum kümmern, gewinnt der Müllsammler auf jeden Fall.
Aus diesem Grund mag ich den Garbage Collector nicht, denn er fördert den gleichen gleichgültigen Umgang mit Ressourcen.
Anstatt Annahmen über die Funktionsweise eines Garbage Collectors zu treffen, sollten Sie einfach die Geschwindigkeit der automatischen Objektentfernung mit der manuellen Entfernung vergleichen. Alle Fantasien werden sofort verschwinden.
die Geschwindigkeit der automatischen Objektentfernung und der manuellen Objektentfernung zu vergleichen.
Die Antwort lautet vorzugsweise sofort. Es ist nicht immer Zeit für Experimente.