ART가 가상 머신인지 궁금합니다. dex2at는 dalvik 바이트 코드를 네이티브 (플랫폼에 따라 다름) 코드 인 elf 파일로 컴파일합니다. 그래서 안드로이드 개발자 기사에서 언급했듯이 여전히 가비지 수집기가 있습니다. 어떻게 작동하는지, 원시 컴파일 된 엘프 파일을 가지고 있는지 이해할 수 없지만 여전히 가상 머신 환경에서 실행됩니까? 이 경우 GC가 어떻게 작동합니까? 자세한 내용을 읽어 보거나 설명해주십시오. 미리 감사드립니다. Android 런타임 (ART)은 가상 머신입니까?
3
A
답변
2
GC는 메모리가 관리되는 방식 일뿐입니다. 모든 Java VM에서 GC는 메모리 할당과 가비지 수집을 담당하는 엔터티입니다. 객체 GC를 할당 할 때 사용 가능한 메모리를 확인하고 여유 공간이없는 경우 쓰레기를 수집합니다. 동일한 알고리즘을 C 또는 C++와 같은 모국어로 구현할 수 있습니다. 따라서 자바를 바이트 코드로 컴파일 한 다음 bytecode를 호출하면 GC와 GC가 JVM 내에서 실행되거나 자바를 원시 코드로 컴파일하고 GC와 링크를 공유 라이브러리로 연결할 수 있습니다. Miriad Group (예 : Esmertec)의 VM이 있는데 ART 이전에 Java ME를 사용했지만 Java ME의 경우
여전히 가상 시스템에서 실행됩니다. 즉 타사 응용 프로그램의 각 프로세스가 가상 시스템 인스턴스라는 의미입니까? 그리고 메모리를 할당하고자 할 때 가상 머신 책임자에게 (리눅스에서) 네이티브 메모리 공간에 메모리를 할당하도록 요청할 것입니다. – atzcijhu
예, 당신은 일반적입니다. 그러나 'linux에서 메모리 할당'이라고 말하면 많은 의미가 없습니다. VM은 여전히 자체 힙을 가지고 있으며 힙은 물론 시스템 메모리에서 할당됩니다. GC는 수집뿐만 아니라 압축을 수행하기 때문에 응용 프로그램 또는 VM은 시스템 메모리에 객체를 할당하지 않습니다. 객체가 이동 중입니다. – mishmashru