네이티브 코드와 관리 코드의 차이점은 무엇입니까?
예를 들어 GlowCode 프로파일 러 웹 사이트를 보면 다음과 같이 표시됩니다.
"GlowCode 6.2 및 x64 프로필 기본, 관리 및 혼합 C ++, C #, .NET 코드"
무슨 뜻입니까?
네이티브 코드는 메모리가 "관리"되지 않는 코드입니다. 즉, 메모리가 해제되지 않고 (예 : C ++ '삭제 및 C가 해제 됨) 참조 계산, 가비지 수집이 없습니다. 짐작했듯이 관리 코드는 메모리가 비어 있고 할당 된 코드, 가비지 수집 및 기타 장점입니다.
혼합 코드는 관리되지 않는 계층을 호출하는 관리 코드가있는 경우입니다. 일반적으로 관리되지 않는 순수한 C ++ DLL이 있고 P / invoke를 사용하여 .NET에서 호출 할 때.
네이티브 코드는 OS와 직접 작동하도록 컴파일됩니다. 그러나 관리 코드는 미리 컴파일되지만 (Java로 말하는 바이트 코드) Just In Time 컴파일러에서 런타임에 네이티브 코드로 처리됩니다. 관리 코드는 VM이 실제로 사용할 때까지 기계 코드가 생성되지 않기 때문에 다른 운영 체제에서 실행될 가능성이 있다는 흥미로운 부작용이 있습니다. 이렇게하면 Windows에서 .NET 앱을 실행할 수 있으며 Mono 런타임이 설치된 Linux 또는 Mac에서도 실행할 수 있습니다. 이식성은 현재 Java만큼 깨끗하지는 않지만 (Microsoft의 자연적으로 폐쇄 된 아키텍처로 인해) 개념은 그대로 유지됩니다.
관리되지 않는 앱을 실행중인 경우 지정된 OS / 하드웨어에 대해 실행되도록 코드가 컴파일되었습니다. 다른 OS / 명령 세트에 대한 이식성은 손실되며 실행하려면 다시 컴파일해야합니다.
원시 코드는 실행중인 컴퓨터의 "기본"기계어로 작성되며 프로세서에 의해 직접 실행됩니다.
관리 코드는 다른 프로그램을 실행 (즉, 관리)해야하는 특수 언어로 작성됩니다. 이 다른 프로그램은 특수 언어를 해석하기 때문에 종종 통역사라고합니다.
C 및 C ++ 프로그램은 기본입니다.
Java 및 C # (및 해당 문제에 대한 모든 .NET 언어)이 관리됩니다.
Managed C ++는 .NET 인터프리터에서 실행되는 특수한 형태의 C ++입니다.
혼합 프로그램은 기본 및 관리 코드를 모두 사용하는 프로그램입니다.
CLR (공용 언어 런타임)의 제어하에 실행되는 코드를 관리 코드라고합니다. CLR에서 실행되지 않는 코드를 네이티브 코드라고합니다.
참조 URL : https://stackoverflow.com/questions/855756/difference-between-native-and-managed-code
'programing' 카테고리의 다른 글
Anaconda Python (Windows 플랫폼)에서 xgboost를 설치하는 방법은 무엇입니까? (0) | 2021.01.17 |
---|---|
케이스 OR-ing을 사용하는 VB.NET select case 문 논리는 무엇입니까? (0) | 2021.01.17 |
iPhone : 핵심 데이터에 부울 저장 (0) | 2021.01.17 |
파일에서 Unix 권한 마스크를 어떻게 얻을 수 있습니까? (0) | 2021.01.17 |
사용할 GIT 선택 개인 키 (0) | 2021.01.17 |