Frage

Managed Sprachen diejenigen sein, die Speicherbereinigung für Sie.

Bearbeiten Ich spreche nicht über die Garbage Collection. Ich war nur daran interessiert zu wissen über Sprachen, die automatisch Speicher für mich free() würden, und noch in Maschinencode kompilieren nach unten.

War es hilfreich?

Lösung

Sie scheinen verwirrend „Managed“ und „Garbage Collection“ zu sein, während oft verwalteten Sprachen (zB C # und Java) Garbage Collection automatisiert haben, „managed“ bezieht sich eigentlich auf die Tatsache, dass es eine „virtuelle Maschine“ ist die führt der Code (siehe http://en.wikipedia.org/wiki/Managed_code ).

So zum Beispiel die CLR (Common Language Runtime) ist die virtuelle Maschine .NET-Code ausgeführt wird, und die JVM (Java Virtual Machine) ist die virtuelle Maschine die Ausführung von Java-Code.

Sie können in der Tat haben Garbage-Collection für nicht verwalteten Sprachen (zB C ++ ), und umgekehrt haben es geschafft, Sprachen ohne Garbage collection (EDIT: ich war für einige suchen, aber ich kann nicht, es sei denn

EDIT: Als Update für die Aktualisierung Ihrer Frage, es gibt in der Tat eine Reihe von Alternativen zu Garbage Collection in einem Spektrum zwischen der Extrem kompletter manueller Speicherverwaltung und Garbage Collection, und einem viele Sprachen, die in Maschinencode kompilieren integrieren Formen der Speicherverwaltung variiert, die Sie nicht benötigen, um explizit freie Speicher.

Darf ich frage - ist dies eine „out of interest“ Frage, oder versuchen Sie eine Sprache für ein Projekt wählen - Wenn letzteres dann, warum Sie so interessiert ist mit Ihrem Langauge in Maschinencode kompiliert nach unten? Sicher im Fall von .Net Code JIT kompilierte mit bietet eine Reihe von Performance-Vorteilen (in der Mehrzahl der Fälle), auch Ihren Code NGENing nicht die Abhängigkeit von Rahmen .Net entfernen.

Andere Tipps

Lose:

LISP (und Varianten), Erlang, C # (unter Mono), Haskell, Java (mit gcj)

Sicher gibt es. Java, zum Beispiel. (Gcj)

Doch der Begriff verwaltet selbst bedeutet, dass Sie eine gewisse Laufzeit zu tragen haben um.

Ein paar mehr, im weiteren Sinne von „managed“ sicherem Sinn (über Laufzeittypprüfung oder abschließende statische Analyse) und / oder Müll gesammelt:

  • OCaml
  • D
  • Ada
  • Prolog
  • Sauber
  • Eiffel

Analog zu Efraims Antwort, jedes .NET-Programm wird in 2 Schritten (JIT) und, in der Regel in Maschinencode kompilieren, aber es ist ein NGEN Werkzeug, um die MSIL zu nativen vorge kompiliert.

Es ist eine semi-GC Wahl. GLIB

Gilb verwenden Referenzzähler Lebensdauer des Objekts zu verwalten. Wenn refrence Zählung 0 erfüllen, ein Objekt gereinigt wird.

Es viel viel mehr inconvienient als .NET oder Java oder Python, aber wenn man C verwenden, es ist besser als nichts.

scroll top