Managed / Unmanaged

Donghee Seo·2023년 4월 19일
0

CS JAVA 편

목록 보기
1/1

Managed - Unmanaged 언어의 차이와 장점 단점


메모리의 종류에는 (Code, Data, Heap, Stack)의 영역이 있다.

메모리 영역 중 프로그래머가 관리하는 Heap영역을 관리 여부에 따라 Managed와 Unmanaged로 나눈다.

1. Managed

  • Managed 언어란 런타임 환경 내에서 프로그램을 생성하도록 설계된 언어를 의미한다.

  • 이 언어들은 대부분 인터프리터나, VM, CLR을 지원하고 코드가 이 위에서 동작하도록 설계되어있다. 즉 런타임 환경에 의해 관리되고 의존하는 코드이다.

  • 런타임 환경이 OS환경에 맞는 Native Code로 변환되어 동작한다.

  • 컴파일이나 코드 실행 등이 실행환경 위에서 동작

  • 변수의 형을 엄격하게 제한한다.

  • Garbage Collection: 메모리 관리를 가비지 컬렉터에서 관리한다.

  • 실행환경 : 인터프리터(ex:자바스크립트), VM(ex:자바), CLR(.net)

2. Unmanaged

  • Unmanaged 언어란 런타임 환경의 관리를 받지 않는 모든 언어를 말한다.
  • 컴파일을 수행하고, 컴파일을 통해 bytecode와 실행파일을 생성한다.
  • Unmanaged언어로는 C, C++등이 있다.


Managed 장점

  • 런타임 환경으로 다양한 도움을 받는다.
  • 메모리 관리를 자동으로 해주기 때문에 메모리 누수걱정이 없다.
  • 코드가 런타임 환경에 의존하기에 하드웨어나 OS에 종속되지 않는다.

Managed 단점

  • 메모리 관리를 구체적으로 할 수 없어 프로그래밍의 자유도가 낮다.
  • 비정기적인 메모리관리가 이루어진다.
  • Unmanaged에 비해 실행 속도가 느리다.
  • 런타임 환경이 설치되어있지 않으면 실행할 수 없다.

Unmanaged 장점

  • Managed보다 속도가 빠르다.
  • 메모리를 직접 관리하기 때문에 메모리 관리에 능숙하면 더 좋은 효율을 낼 수 있다.

Unmanaged 장점

  • 다른 환경에서 코드를 사용하려면 새롭게 컴파일 해야한다 (확장성의 한계)
profile
주니어 백엔드 개발자

0개의 댓글