4 Stimmen

Scala-Akteur Speicherlecks, sind sie so schlecht wie es war oder Verbesserung?

Ich studiere derzeit Scala 2.8 mit Programming in Scala 2nd Edition.

Aber ich fange an, mir über Beiträge wie diesen Sorgen zu machen Clojure gegen Scala

Ist Scala so schlecht über Speicherlecks, dies ist nicht die erste Info, die ich über Probleme mit Akteuren und Speicherlecks gehört.

Ist es so schlimm? werden neue Versionen in angemessener Zeit behoben? Wird Akka alle diese Probleme lösen, wenn oder falls es zusammengeführt wird?

Denn wenn man große Probleme mit einer der größten Skala Stärken (zumindest für mich sind Erlang-Akteure eines der größten Bonbons der Sprache) ist wirklich ein großer Nachteil, wenn sie nicht in der Lage sind, sie zu beheben und zu verbessern.

8voto

Daniel C. Sobral Punkte 290004

Ich weiß von Leuten, die eine große Anzahl von Akteuren verwenden, daher bin ich mir ziemlich sicher, dass Speicherlecks nicht weit verbreitet sind.

Hatte Scala Actors im Jahr 2009 (Scala 2.7.x) Speicherlecks? Ja, das hatten sie. Zum Beispiel, SI-1801 y SI-1948 .

Im Moment gibt es drei offene Tickets zu Speicherlecks, die ich finden konnte: SI-3467 , SI-3920 y SI-3921 .

Mit einer Ihrer Bemerkungen bin ich allerdings nicht einverstanden:

eine der größten Stärken von Scala (zumindest für sind eines der größten Bonbons der Sprache)

Die Schauspieler sind NICHT Teil der Sprache! Sie sind eine Bibliothek! Das ist der ganze Sinn von Scala, es ist die eigentliche Bedeutung von "skalierbar", von der der Name Scala stammt: dass man Dinge wie diese hinzufügen kann durch Bibliotheken .

Es gibt sie, gerade jetzt, vier verschiedene Actor-Implementierungen in Scala: Hauptbibliothek, Scalaz, Lift und Akka. Es gibt absolut no Grund für Sie, sich an die Standardbibliothek zu binden. Eines der Probleme mit den Akteuren in der Hauptbibliothek besteht darin, dass sie eher geschrieben wurden, um zu beweisen, dass man es tun kann, als um echte Probleme zu lösen.

Wenn Sie Akteure verwenden wollen, verwenden Sie Akka. Sie können es verwenden im Augenblick . Man kann es sogar mit Java verwenden, wenn man auf syntaktischen Masochismus steht. Akka ist eine hervorragende Bibliothek, die weit über die bloße Bereitstellung von Akteuren hinausgeht und alle unterstützenden Werkzeuge bereitstellt, um sie nützlich zu machen (wie Supervisoren und Load Balancer), sowie weitere Werkzeuge zur vollständigen Unterstützung von Nebenläufigkeit, wie Agenten (im Stil von Clojure), STM (Multiverse-basiert), Integration mit Spring, Camel, AMQP usw.

Die Stärke von Scala ist es, dass man es scheinbar durch Bibliotheken erweitern kann. Wenn Sie sich auf das beschränken, was in der Standardbibliothek enthalten ist, verschenken Sie das.

3voto

paradigmatic Punkte 39621

Sie sollten Akka ausprobieren. Es ist wirklich robust, leichtgewichtig und abstimmbar. Sie können zum Beispiel gebundene Briefkastengrößen (und entscheiden, was zu tun ist, wenn die Postfächer voll sind).

1voto

Arnaud Le Blanc Punkte 95132

Ich kenne mich mit den Interna von Scala nicht so gut aus, aber ich würde vermuten, dass Scalas Actors-Implementierung jede Nachricht ohne Limit in eine Warteschlange stellt.

Wenn die Akteure nicht schnell genug aus der Warteschlange abrufen, wächst die Warteschlange und verbraucht Speicher.

Ich vermute, dass eine weniger speicherintensive Implementierung die Anzahl der Nachrichten in der Warteschlange begrenzen würde und somit weniger Speicher verbrauchen würde (aber auch die Absender von Nachrichten blockieren würde, während die Warteschlange voll ist).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X