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.