2024年安卓最新Android之 Android 虚拟机(1),港口面试问题回答技巧

最后

想要了解更多关于大厂面试的同学可以点赞支持一下,除此之外,我也分享一些优质资源,包括:Android学习PDF+架构视频+源码笔记高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料 这几块的内容。非常适合近期有面试和想在技术道路上继续精进的朋友。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

少冗余的信息;而 DEX 文件格式会把所有的 CLASS 文件内容整合到一个文件中。这样,除

了减少整体的文件尺寸,I/O 操作,也提高了类的查找速度。 原来每个类文件中的常量池,

在 DEX 文件中由一个常量池来管理。

一个应用,一个虚拟机实例,一个进程

每一个 Android 应用都运行在一个 Dalvik 虚拟机实例里,而每一个虚拟机实例都是一个独立

的进程空间。虚拟机的线程机制,内存分配和管理,Mutex 等等都是依赖底层操作系统实现

的。所有 Android 应用的线程都对应一个 Linux 线程,虚拟机因而可以更多的依赖操作系统

的线程调度和管理机制。

不同的应用在不同的进程空间里运行,加之对不同来源的应用都使用不同的 Linux 用户来运

行,可以最大程度的保护应用的安全和独立运行。

Zygote 是一个虚拟机进程,同时也是一个虚拟机实例的孵化器,每当系统要求执行一个

Android 应用程序,Zygote 就会 FORK 出一个子进程来执行该应用程序。这样做的好处显而

易见:Zygote 进程是在系统启动时产生的,它会完成虚拟机的初始化,库的加载,预置类库

的加载和初始化等等操作,而在系统需要一个新的虚拟机实例时,Zygote 通过复制自身,最

快速的提供个系统。另外,对于一些只读的系统库,所有虚拟机实例都和 Zygote 共享一块

内存区域,大大节省了内存开销。

基于寄存器

相对于基于堆栈的虚拟机实现,基于寄存器的虚拟机实现虽然在硬件通用性上要差一些,       但

是它在代码的执行效率上却更胜一筹。在基于寄存器的虚拟机里,       可以更为有效的减少冗余

指令的分发和减少内存的读写访问。

DEX 再优化

DEX 文件的结构是紧凑的,但是如果我们还想要求运行时的性能有进一步提高,我们就仍然

需要对 DEX 文件进行进一步优化。优化主要是针对以下几个方面:

调整所有字段的字节序(LITTLE_ENDIAN)和对齐结构中的每一个域

验证 DEX 文件中的所有类

对一些特定的类进行优化,对方法里的操作码进行优化

优化后的文件大小会有所增加,应该是原 DEX 文件的 1-4 倍。

优化发生的时机有两个:

对于预置应用,可以在系统编译后,生成优化文件,以 ODEX 结尾。这样在发布时除

APK 文件(不包含 DEX)以外,还有一个相应的 ODEX 文件;

对于非预置应用,包含在 APK 文件里的 DEX 文件会在运行时被优化,优化后的文件将

被保存在缓存中。

代码调用流程:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

java 程序和虚拟机

虚拟机实例的孵化器 Zygote 进程启动后,会注册 zygote socket(/dev/socket/zygote)用来侦

听和处理运行字节码程序的请求。

参考 init.rc line 243:

service zygote /system/bin/app_process -Xzygote /system/bin --zygote

–start-system-server

socket zygote stream 666

onrestart write /sys/android_power/request_state wake

onrestart write /sys/power/state on

init 设置了参数“–zygote”       ,进入服务模式。具体实现在 Java 类

com.android.internal.os.ZygoteInit

当 zygote 进程接收到来自应用程序的请求后(当需要运行 manifest 文件中的,

,和中的类时,就会通过 socket 向 zygote 发送启动命令)             ,会

写在最后

最后我想说:对于程序员来说,要学习的知识内容、技术有太多太多,要想不被环境淘汰就只有不断提升自己,从来都是我们去适应环境,而不是环境来适应我们!

这里附上上述的技术体系图相关的几十套腾讯、头条、阿里、美团等公司2021年的面试题,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。

相信它会给大家带来很多收获:

当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

戳这里获取](https://bbs.csdn.net/topics/618156601)**

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 16
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android虚拟机Dalvik完整源码,宝贵资源,欢迎下载! This directory contains the Dalvik virtual machine and core class library, as well as related tools, libraries, and tests. A note about the licenses and header comments --------------------------------------------- Much of the code under this directory originally came from the Apache Harmony project, and as such contains the standard Apache header comment. Some of the code was written originally for the Android project, and as such contains the standard Android header comment. Some files contain code from both projects. In these cases, the header comment is a combination of the other two, and the portions of the code from Harmony are identified as indicated in the comment. Here is the combined header comment: /* * Copyright (C) The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * ---------- * * Portions of the code surrounded by "// BEGIN Harmony code" and * "// END Harmony code" are copyrighted and licensed separately, as * follows: * * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ Native SH call bridge --------------------- Native SH call bridge is written by Shin-ichiro KAWASAKI and Contributed to Android by Hitachi, Ltd. and Renesas Solutions Corp.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值