문제

관리 언어는 메모리 정리를 처리하는 언어입니다.

편집하다 나는 쓰레기 수집에 대해 말하는 것이 아닙니다. 나는 단지 언어에 대해 알고 싶었습니다. free() 자동으로 메모리를 제공하고 여전히 기계 코드로 컴파일합니다.

도움이 되었습니까?

해결책

"관리"및 "가비지 수집"을 혼란스럽게하는 것처럼 보이며, 종종 관리되는 언어 (예 : C# 및 Java)는 자동 가비지 컬렉션이 있습니다. "관리"는 실제로 코드를 실행하는 "가상 머신"이 있다는 사실을 나타냅니다. (보다 http://en.wikipedia.org/wiki/managed_code).

예를 들어 CLR (Common Language Runtime)은 .NET 코드를 실행하는 가상 머신이며 JVM (Java Virtual Machine)은 Java 코드를 실행하는 가상 머신입니다.

실제로 관리되지 않는 언어를위한 쓰레기 수집이있을 수 있습니다 (예 : C ++), 그리고 Versa Versa는 쓰레기 수집없이 언어를 관리했습니다 (편집 : 나는 일부를 찾고 있었지만 아무것도 찾을 수없는 것 같습니다. 객관적인 c 계산합니다

Java와 C#은 실제로 실제로 기계 코드로 직접 컴파일 될 수 있으므로 직접 실행되며 가상 머신을 사용하지 않습니다. .NET 코드의 경우 NGEN을 사용하여 수행됩니다 (실제로 CLR은 .NET 어셈블리를 컴퓨터로 컴파일합니다. 소위 "Just In Time"편집을 실행하십시오)

편집하다: 귀하의 질문 업데이트에 대한 업데이트로서, 실제로 완전한 수동 메모리 관리와 쓰레기 수집의 극단적 인 스펙트럼과 기계 코드에 컴파일하는 많은 언어 사이의 스펙트럼에서 가비지 컬렉션에 대한 여러 가지 대안이 있습니다. 메모리 관리는 명시 적으로 자유롭게 메모리를 필요로하지 않는 메모리 관리입니다.

내가 물어볼 수 있습니까? 이것은 "관심이없는"질문입니까, 아니면 프로젝트를위한 언어를 선택하려고 하는가? Code JIT 컴파일이있는 .NET의 경우 확실히 많은 성능 이점 (대부분의 경우)이 제공되면 코드가 .NET 프레임 워크에서 의존성을 제거하지는 않습니다.

다른 팁

많이 :

LISP (및 변형), Erlang, C# (모노 아래), Haskell, Java (GCJ 포함)

물론 있습니다. 예를 들어 Java. (GCJ)

그러나 관리라는 용어 자체는 당신이 약간의 런타임을 가지고 있어야한다는 것을 의미합니다.

몇 가지 더, 더 넓은 "관리 된"의미에서 안전 (런타임 유형 검사 또는 철저한 정적 분석을 통해) 및/또는 수집 된 쓰레기를 의미합니다.

  • OCAML
  • 아다
  • 프롤로그
  • 깨끗한
  • 에펠

Efraims의 답변에 대한 아날로그, 모든 .NET 프로그램은 일반적으로 2 단계 (JIT)로 기계 코드로 컴파일하지만 MSIL을 기본으로 사전 컴파일하는 NGEN 도구가 있습니다.

반 GC 선택이 있습니다 : glib.

GILB를 사용하여 참조 수를 사용하여 객체의 수명을 관리합니다. Retrence Count가 0을 충족하면 물체가 청소됩니다.

.NET 또는 Java 또는 Python보다 훨씬 더 불과하지만 C를 사용해야 할 때는 아무것도 아닌 것보다 낫습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top