webentwicklung-frage-antwort-db.com.de

Unterschied zwischen nativem und verwaltetem Code?

Wenn Sie sich beispielsweise die GlowCode-Profiler-Website ansehen, heißt es:

"Nativer, verwalteter und gemischter C++ -, C # - und .NET-Code für GlowCode 6.2 und x64-Profile"

Was meinen sie?

53
Joel

Nativer Code ist der Code, dessen Speicher nicht "verwaltet" wird, da in, Speicher für Sie nicht freigegeben wird (C++ 'löschen und C ist beispielsweise frei), keine Referenzzählung, keine Garbage Collection. Verwalteter Code ist, wie Sie vermutet haben, der Code, dessen Speicher frei und für Sie reserviert ist, die Speicherbereinigung und andere nützliche Dinge.

Gemischter Code ist, wenn Sie Code verwaltet haben, der auf eine nicht verwaltete Ebene zugreift. Normalerweise, wenn Sie ein reines nicht verwaltetes C++ haben DLL und es von .NET mit P/invoke aufrufen.

74
Anzurio

Nativer Code wird kompiliert, um direkt mit dem Betriebssystem zu arbeiten. Verwalteter Code wird jedoch vorkompiliert (Bytecode in Java-Sprache) und dann vom Just In Time Compiler zur Laufzeit zu systemeigenem Code verarbeitet. Verwalteter Code hat den interessanten Nebeneffekt, dass er möglicherweise auf verschiedenen Betriebssystemen ausgeführt wird, da der Computercode erst erstellt wird, wenn er von VM verwendet wird. Auf diese Weise können Sie ihn ausführen. NET-Apps laufen unter Windows und auch unter Linux oder Mac, auf denen die Mono-Laufzeit installiert ist.Die Portabilität ist derzeit nicht so sauber wie Java ist (aufgrund der natürlich geschlossenen Architektur von Microsoft), sondern das Konzept Überreste.

Wenn Sie eine nicht verwaltete App ausführen, wurde der Code so kompiliert, dass er für das angegebene Betriebssystem/die angegebene Hardware ausgeführt werden kann. Jede Portabilität zu einem anderen Betriebssystem/Befehlssatz geht verloren und muss zur Ausführung neu kompiliert werden.

44
Wayne Hartman

Nativer Code ist in der "nativen" Maschinensprache des Computers geschrieben, auf dem er ausgeführt wird, und wird direkt vom Prozessor ausgeführt.

Verwalteter Code ist in einer speziellen Sprache geschrieben, die ein anderes Programm erfordert, um ihn auszuführen (d. H. Zu verwalten). Dieses andere Programm wird oft als Interpreter bezeichnet, da es die spezielle Sprache interpretiert.

C- und C++ - Programme sind native.

Java und C # (und alle .NET-Sprachen) werden verwaltet.

Managed C++ ist eine spezielle Form von C++, die im .NET-Interpreter ausgeführt wird.

Ein gemischtes Programm ist ein Programm, das sowohl systemeigenen als auch verwalteten Code verwendet.

29
onedozenbagels

Code, der unter der Kontrolle der Common Language Runtime (CLR) ausgeführt wird, wird als verwalteter Code bezeichnet. Code, der nicht unter der CLR ausgeführt wird, wird als systemeigener Code bezeichnet.

6
Hanu