programing

Dalvik 가상 머신 인스턴스가 각 애플리케이션에 대해 생성됩니까?

luckcodes 2021. 1. 17. 11:31

Dalvik 가상 머신 인스턴스가 각 애플리케이션에 대해 생성됩니까?


각 애플리케이션에 대해 Dalvik 가상 머신 인스턴스가 생성됩니까? 아니면 모든 Android 애플리케이션이 동일한 Dalvik 가상 머신 인스턴스를 공유합니까?


모든 Android 애플리케이션은 자체 Dalvik 가상 머신 인스턴스와 함께 자체 프로세스에서 실행됩니다. Dalvik은 장치가 여러 VM을 효율적으로 실행할 수 있도록 작성되었습니다.

Dalvik VM은 .dex최소 메모리 공간에 최적화 된 Dalvik Executable ( ) 형식으로 파일을 실행합니다 .

VM은 레지스터 기반이며 .dex포함 된 dx도구에 의해 형식 으로 변환 된 Java 언어 컴파일러로 컴파일 된 클래스를 실행 합니다.

또한 한 번 봐 가지고 무엇 ... 달빅 가상 머신 DVM에 대한 자세한 설명을.


  1. Dalvik 가상 머신은 Android 용으로 특별히 제작되었습니다. 배터리 수명처리 전력 문제 를 해결하기 위해 제작되었으며 무료 입니다.

  2. Java 컴파일러, Java 도구는 무료이지만 JVM은 무료가 아니기 때문에 Java Virtual Machine (JVM) 대신 Dalvik VM을 사용하고 있습니다. 따라서 Google의 Android 개발자는 자체 가상 머신을 만들어 무료로 만들었습니다.

  3. 가상 컴퓨터는 디버깅에 도움이되므로 내 애플리케이션이 동일한 방식으로 다른 장치를 실행할 수 있도록 가상 컴퓨터로 가상 컴퓨터가 필요합니다.

그림 표현

IMG


.java파일은 자바 컴파일러 (주어집니다 javac생성) .class파일을.

단일 파일 을 생성 .class하기 위해 모든 파일이 dx도구에 제공 dex됩니다.

dex파일은 최종 기계 코드를 생성 할 수 달빅 VM에 제공됩니다.

최종 기계 코드는 실행할 CPU에 제공됩니다.


모든 apk의 기본 소스 코드는 자바 언어로되어 있습니다. 이 프로젝트를 빌드하면 모든 .java 파일이 .class로 변환됩니다. 이제 adk의 dx 도구가 모든 .class 파일을 classes.dex 파일로 변환하고이 classes.dex 파일은 dalvik 가상 머신에서 실행됩니다.

dalvik 가상 머신에 대한 자세한 정보 : http://www.slideshare.net/jserv/understanding-the-dalvik-virtual-machine

Dalvik 가상 머신은 한 번에 여러 VM을 실행하기위한 것입니다. 따라서 모든 앱은 @sahilMahajanMj가 말한대로 Dalvik 가상 머신의 자체 인스턴스와 함께 자체 프로세스에서 실행됩니다.

이 classes.dex 파일은 odex 파일에 더 최적화되어 / dalvik / dalvik-cache에 저장됩니다 .
odex에 대해 자세히 알아 보려면 여기를 클릭하십시오 .

Android 용 DVM이 왜 JVM 아닌지 알고 싶다면 이것을 클릭하십시오.


Dalvik 은 모든 안드로이드 애플리케이션이 실행되는 가상 머신입니다. Dalvik을 통해 장치는 Dalvik VM이 등록 기반이므로 메모리 효율적이므로 더 나은 메모리 관리를 통해 여러 가상 머신을 실행할 수 있습니다.

모든 Android 앱은 자체 Dalvik VM 인스턴스와 함께 자체 프로세스에서 실행됩니다. 먼저 Java 컴파일러에 의해 Java 파일이 .class 파일로 변환됩니다. .class 파일은 .dex 형식으로 변환하는 "dx"도구에 제공됩니다. .dex 파일은 DVM에 제공되어 기계 코드를 생성합니다. 기계 코드는 CPU에 의해 실행됩니다.

.apk 파일에는 Dalvik VM에서 실행할 수있는 zip 형식의 .dex 파일이 포함되어 있습니다.

왜 Dalvik인가? 1. DVM은 배터리 수명, 처리 능력 및 무료를 위해 구축되었습니다. 2. JVM이 무료가 아니므로 JVM 대신 DVM을 사용하고 있습니다. Dalvik VM은 모든 모바일 장치에서 일관성을 제공합니다. 즉, 하나의 애플리케이션이 동일한 방식으로 다른 장치에서 실행됩니다.

참조 URL : https://stackoverflow.com/questions/13577733/is-a-dalvik-virtual-machine-instance-created-for-each-application