2017-04-17 6 views
0

내가 아는 한, 바이트 코드를 처리하는 모든 가상 머신은 JVM을 예로 들어 보자. (바이트 코드를 실행중인) VM의 현재 상태를 어떻게 든 분석하여 자신의 가비지 컬렉터를 구현하고 객체 수집과 관련된 결정을 내린다. 힙에서. 미리 컴파일 할 때 나는 혼란 스럽다. 즉, 앱을 처음 시작하기 전에 전체 바이트 코드가 기본 코드로 컴파일됩니다. 그래서 ... 앱이 시작되면 프로세서가 원시 코드를 실행합니다. 어쨌든 전체 바이트 코드를 네이티브로 컴파일하면 VM은 어디서 들어 옵니까? GC는 어디에서 제공되며 분석은 무엇입니까? 내 지식이 완전히 결함이있을 수 있습니다. 그렇다면 좋은 기사를 추천 해주세요. 많이 읽었 기 때문에이 사실을 알 수 없습니다 ... 나는 미쳐 가고 있습니다!Android ART 가비지 수집 방법은 무엇입니까?

+0

당신은? 유튜브에 구글 IO 비디오 관련 ART를 본 https://youtu.be/EBlTzQsUoOw 및 https://youtu.be/fwMM6g7wpQ8 –

+0

더 읽기 : [LLVM와 가비지 수집] (http://llvm.org/docs/GarbageCollection.html) – rici

+0

@rici는 LLVM GC가 아니며 구현이 아닌가? –

답변

0

ART는 응용 프로그램의 바이트 코드를 나중에 장치의 런타임 환경에서 실행되는 원시 명령어로 변환합니다. 런타임 환경에 자체 가비지 수집기가 있습니다. 앱에 약간의 메모리가 필요하면 런타임 환경에서 요청되며 안드로이드 OS에서는 요청되지 않습니다.

귀하의 앱이 가상 컴퓨터에 빌드되어 있다고 생각할 수 있습니다. 이 가상 시스템은 런타임 환경입니다.

P. Google presentation about ART을 보았습니까?

image

+0

그래서 런타임은 시간 컴파일 (네이티브 코드)에 앞서 실행 된 코드를 "실행"하며 gc는이 특정 런타임의 일부입니까? 나는 비디오를 보았는데 흥미로운 정보를 보았지만 내 질문에는 대답하지 않았다. ( – AdamK

+0

예, 말하고 싶은 것입니다 .GC는 런타임의 일부입니다. 정상적인 디자인입니다. 바이너리.이 바이너리는 GC에서 빌드됩니다. – BayK