///////
Search
📌

Managed - Unmanaged 언어의 차이는 무엇이고 어떤 장, 단점이 있나요?

메모리의 영역중 Heap 영역을 관리해 주는지 안해주는지에 따라 나뉜다.
메모리의 종류
Managed 언어
특정 런타임 환경 내에서, 프로그램을 생성하도록 설계된 언어
대부분 인터프리터나, VM(Virtual Machine)을 지원하고 프로그램의 코드가 이 위에서 동작하도록 설계되어 있다.
Python, JavaScript, Java, C#
장점
1.
메모리의 할당과 해제를 통한 메모리 관리없이, 언어 자체적으로 메모리를 관리
2.
런타인 환경으로부터 다양한 도움을 받을 수 있다. (메모리 관리를 자동으로 해주기 때문에 메모리 누수의 문제에서 자유롭다)
3.
코드가 런타임 환경에 의존하므로 하드웨어나 OS에 종속되지 않는다.
단점
1.
메모리를 구체적으로 관리할 수 없기 때문에 프로그래밍의 자유도가 낮으며 비정기적인 메모리 정리가 이루어진다.
Unmanaged 언어
VM과 같은 런타임 환경의 관리를 받지 않는 모든 언어
일반적인 컴파일을 수행하고, 컴파일을 통해 bytecode를 생성하고, 실행파일을 생성한다.
C, C++
장점
1.
메모리를 구체적으로 관리할 수 있기 때문에 프로그래밍의 자유도가 높다. (개발자의 역량 중요)
단점
1.
프로그래머가 실수할 경우 메모리 누수(Memory Leak) 가 발생할 수 있다.