Dalvik과 dalvik-cache는 무엇입니까?


80

이것이 Android의 기본적인 질문 일 수 있다는 것을 알고 있습니다. 그러나 Dalvik과 dalvik-cache는 무엇입니까?

답변:


136

Dalvik은 Android에서 사용하는 가상 머신입니다. 정확하지는 않지만 일반적으로 Java 가상 머신으로 간주됩니다. Java와 동일한 객체 모델을 사용하며 메모리 모델도 거의 동일합니다. 그러나 dalvik VM은 스택 기반 인 Java VM과 달리 레지스터 기반 VM입니다.

따라서 Java와는 완전히 다른 바이트 코드를 사용합니다. 그러나 Android SDK에는 Java 바이트 코드를 dalvik 바이트 코드로 변환 하는 dx 도구 가 포함되어 있으므로 Java로 Android 애플리케이션을 작성할 수 있습니다.

" dalvik-cache " 라고 말하면 일반적인 Android 기기에서 찾을 수있는 / data / dalvik-cache 디렉토리를 의미한다고 가정합니다 . Android에 애플리케이션을 설치하면 해당 애플리케이션의 dex 파일 (애플리케이션에 대한 모든 dalvik 바이트 코드를 포함하는 파일)에 대해 몇 가지 수정 및 최적화를 수행합니다. 그런 다음 결과 odex ( 최적화 된 dex ) 파일을 / data / dalvik-cache 디렉토리에 캐시 하므로 애플리케이션을로드 할 때마다 최적화 프로세스를 수행 할 필요가 없습니다.

좋은 참조


15
이 Dalvik 캐시를 삭제하면 어떻게 되나요? Dalvik Cache를 다시 빌드해야하므로 앱을로드하는 데 시간이 걸리는 것 외에 다른 효과가 있습니까?
— Swanand

16
옳은. 재 구축 될 때 다음로드 시간을 늘리는 것 외에는 효과가 없습니다.
— JesusFreke

누군가가 다른 중복 문제에 게시 된, 여기 무상 위키 링크는 "달빅 캐시는 안드로이드의 필수적인 부분입니다 당신은 여기에 대한 자세한 읽을 수 있습니다.입니다 en.wikipedia.org/wiki/Dalvik_%28software%29 "
— qneill

1
VM이 ART이므로 Android Lollipop (버전 5)에 Dalvik 캐시가있는 이유는 무엇입니까? 어떤 사람들은 호환성을위한 것이라고 말했지만 많은 공간 (약 900MB)이 필요하다는 것을 알았습니다.
— 안드로이드 개발자

3
Art는 dex 파일을 네이티브 코드로 컴파일합니다. 컴파일 된 코드는 이제 예술과 함께 dalvik-cache에 저장됩니다.
— JesusFreke 2015

3

Dalvik은 Android에서 Android 앱을 실행하는 Java 기반 가상 머신입니다. Dalvik-cache는 Dalvik VM의 캐시 영역이며 Dalvik VM이 앱 실행을 최적화 할 때 생성됩니다.

원하는 경우 Dalvik VM 작업 코드와 "일반"Java VM 작업 코드의 차이점에 대해 인터넷에서 더 많이 찾아 볼 수 있습니다.


0

Dalvik 캐시는 실행 파일로 저장되는 응용 프로그램 코드의 임시 컴파일에 불과합니다. Dalvik 캐시 외부에있는 원래 애플리케이션 코드에서 동적으로 컴파일 할 수 있으므로 실제 패널티없이 Dalvik 캐시를 지울 수 있습니다.


@AndroidKiller는 Dalvik 또는 ART의 존재 여부에 따라 바이트 코드 또는 바이너리 이미지가됩니다. 그래픽 이미지가 아닙니다.
— Neil Steiner

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.