2015-01-07 13 views
3

ART가 가상 머신인지 궁금합니다. dex2at는 dalvik 바이트 코드를 네이티브 (플랫폼에 따라 다름) 코드 인 elf 파일로 컴파일합니다. 그래서 안드로이드 개발자 기사에서 언급했듯이 여전히 가비지 수집기가 있습니다. 어떻게 작동하는지, 원시 컴파일 된 엘프 파일을 가지고 있는지 이해할 수 없지만 여전히 가상 머신 환경에서 실행됩니까? 이 경우 GC가 어떻게 작동합니까? 자세한 내용을 읽어 보거나 설명해주십시오. 미리 감사드립니다. Android 런타임 (ART)은 가상 머신입니까?

답변

2

GC는 메모리가 관리되는 방식 일뿐입니다. 모든 Java VM에서 GC는 메모리 할당과 가비지 수집을 담당하는 엔터티입니다. 객체 GC를 할당 할 때 사용 가능한 메모리를 확인하고 여유 공간이없는 경우 쓰레기를 수집합니다. 동일한 알고리즘을 C 또는 C++와 같은 모국어로 구현할 수 있습니다. 따라서 자바를 바이트 코드로 컴파일 한 다음 bytecode를 호출하면 GC와 GC가 JVM 내에서 실행되거나 자바를 원시 코드로 컴파일하고 GC와 링크를 공유 라이브러리로 연결할 수 있습니다. Miriad Group (예 : Esmertec)의 VM이 있는데 ART 이전에 Java ME를 사용했지만 Java ME의 경우

+0

여전히 가상 시스템에서 실행됩니다. 즉 타사 응용 프로그램의 각 프로세스가 가상 시스템 인스턴스라는 의미입니까? 그리고 메모리를 할당하고자 할 때 가상 머신 책임자에게 (리눅스에서) 네이티브 메모리 공간에 메모리를 할당하도록 요청할 것입니다. – atzcijhu

+0

예, 당신은 일반적입니다. 그러나 'linux에서 메모리 할당'이라고 말하면 많은 의미가 없습니다. VM은 여전히 ​​자체 힙을 가지고 있으며 힙은 물론 시스템 메모리에서 할당됩니다. GC는 수집뿐만 아니라 압축을 수행하기 때문에 응용 프로그램 또는 VM은 시스템 메모리에 객체를 할당하지 않습니다. 객체가 이동 중입니다. – mishmashru