- 浏览: 26401 次
- 性别:
- 来自: 北京
最新评论
大家好,上一讲我们介绍了Android.Framework源码下载及编译,这一讲我们将进入虚拟机概述,JIT概述
课程目标:
知道虚拟机的概念,JVM , JIT
重点难点:
虚拟机带来的好处
考核目标:
C++ 和 Java编译上的区别 应用层代码不修改,为何有时候可以编译过,有时候编译不过 ?
什么是虚拟机?
一种抽象,一种仿真
虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。
An efficient, isolated duplicate of a real machine. –Popek and Goldberg 1974
System virtual machine:一个系统的仿真和抽象,可供一个或多个操作系统在上面运行。Eg: VM Ware, QEMU, KVM
虚拟机指令集可与硬件CPU指令不同
提供隔离isolation
Process virtual machine:只供一个进程的仿真执行 Eg:JVM(Java Virtual Machine), Microsoft .NET
提供可移植性(portability)
WORA, Write once, run anywhere. --Slogan of Sun Microsystem
虚拟的机器:4G内存,标准的IO
WORA: Write Once, Compile once, run everywhere
应用程序和Bytecode编译器独立于硬件(machine-independent)
虚拟机软件仿真要实现指令集转换,虚拟地址物理地址的转换,代价慢!Java刚问世时比C/C++ 慢20X+
什么是JIT
改进:实时编译JIT(Just in Time) compiler
只有新的Bytecode指令需要编译
A typical program with loops and repeated function calls should execute 10x faster using JIT.
No free lunch:需要储存空间,占内存(memory footprint)
啥叫实时? 编译什么? When and What to compile?
Method invoke time? Instruction fetch time? Application launch time?
Whole program? A page? Method? Single instruction?
A compiler's primary function is to compile, organize the compilation, and go right back to compiling. It compiles basically only those things that require to be compiled, ignoring things that should not be compiled. The main way a compiler compiles, is to compile the things to be compiled until the compilation is complete.
汇编器,链接器,加载器
汇编器(Assembler): 转换标签(Tag)为偏移量(offset),汇编语言的IDE,
链接器(Linker):多个目标文件和库变为一个可执行文件或新的库
静态vs动态链接
编译过的常用库二进制码只存一处
更新方便,but … DLL Hell
加载器(Loader):加载到内存:execve().
本讲对虚拟机概述,JIT概述,下一讲将进入Handler-不可缺少的异步_
上,内容预告:AFF110529_Handler-不可缺少的异步_上,敬请期待。
特别推荐新课程:Android开发高端课程
http://www.mobidever.com/forum.php?mod=viewthread&tid=2098
本课视频地址:http://www.tudou.com/programs/view/eMFpniJRUJY/ (土豆网)
课程下载地址:http://www.verycd.com/topics/2900036/ (VeryCD电驴)
作者博客:http://www.mobidever.com/forum.php (Sundy-Android开发联盟)
课程目标:
知道虚拟机的概念,JVM , JIT
重点难点:
虚拟机带来的好处
考核目标:
C++ 和 Java编译上的区别 应用层代码不修改,为何有时候可以编译过,有时候编译不过 ?
什么是虚拟机?
一种抽象,一种仿真
虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。
An efficient, isolated duplicate of a real machine. –Popek and Goldberg 1974
System virtual machine:一个系统的仿真和抽象,可供一个或多个操作系统在上面运行。Eg: VM Ware, QEMU, KVM
虚拟机指令集可与硬件CPU指令不同
提供隔离isolation
Process virtual machine:只供一个进程的仿真执行 Eg:JVM(Java Virtual Machine), Microsoft .NET
提供可移植性(portability)
WORA, Write once, run anywhere. --Slogan of Sun Microsystem
虚拟的机器:4G内存,标准的IO
WORA: Write Once, Compile once, run everywhere
应用程序和Bytecode编译器独立于硬件(machine-independent)
虚拟机软件仿真要实现指令集转换,虚拟地址物理地址的转换,代价慢!Java刚问世时比C/C++ 慢20X+
什么是JIT
改进:实时编译JIT(Just in Time) compiler
只有新的Bytecode指令需要编译
A typical program with loops and repeated function calls should execute 10x faster using JIT.
No free lunch:需要储存空间,占内存(memory footprint)
啥叫实时? 编译什么? When and What to compile?
Method invoke time? Instruction fetch time? Application launch time?
Whole program? A page? Method? Single instruction?
A compiler's primary function is to compile, organize the compilation, and go right back to compiling. It compiles basically only those things that require to be compiled, ignoring things that should not be compiled. The main way a compiler compiles, is to compile the things to be compiled until the compilation is complete.
汇编器,链接器,加载器
汇编器(Assembler): 转换标签(Tag)为偏移量(offset),汇编语言的IDE,
链接器(Linker):多个目标文件和库变为一个可执行文件或新的库
静态vs动态链接
编译过的常用库二进制码只存一处
更新方便,but … DLL Hell
加载器(Loader):加载到内存:execve().
本讲对虚拟机概述,JIT概述,下一讲将进入Handler-不可缺少的异步_
上,内容预告:AFF110529_Handler-不可缺少的异步_上,敬请期待。
特别推荐新课程:Android开发高端课程
http://www.mobidever.com/forum.php?mod=viewthread&tid=2098
本课视频地址:http://www.tudou.com/programs/view/eMFpniJRUJY/ (土豆网)
课程下载地址:http://www.verycd.com/topics/2900036/ (VeryCD电驴)
作者博客:http://www.mobidever.com/forum.php (Sundy-Android开发联盟)
发表评论
-
《2012Sundy高级课程更新》Android深入浅出系列课程文章列表
2012-03-15 10:25 1754既然是一个系列的教程 ... -
Android开发视频教程-深入浅出系列Lesson20-AFF111029学习Android界面开发的基础
2012-03-19 09:37 1654课程目标: 学习和掌握Android界面开发学习方法 了解An ... -
Android开发视频教程-深入浅出系列Lesson19-AFF110727_蓝牙编程入门
2012-03-19 09:38 1847课程目标 知道蓝牙是什么,能够做什么,知道常用蓝牙的API ... -
Android开发视频教程-深入浅出系列Lesson18-SPI110723_Mobile.Widget概述
2012-03-16 09:39 920· 课程目标: 知道Mobile Widget概念 , 知道其 ... -
Android深入浅出系列课程---Lesson17-在Android2.2以上实现MobileWidget
2012-03-16 09:36 1087大家好,上一讲我们介绍了虚拟机概述,JIT概述,这一讲我们将进 ... -
Android深入浅出系列课程---Lesson16-AFF110606_AsyncTask异步任务
2012-03-16 09:35 991大家好,上一讲我们介绍了Handler-不可缺少的异步,这一讲 ... -
Android深入浅出系列课程---Lesson15LLY110602_Dalvik虚拟机概述
2012-03-16 09:35 1163更多Android深入浅出课程列表:http://www.eo ... -
Android深入浅出系列课程---Lesson14Handler-不可缺少的异步
2012-03-16 09:33 953大家好,上一讲我们介 ... -
Android深入浅出系列课程---Lesson12 AFF110525_Android多线程系统概要
2012-03-15 10:42 1060大家好,上一讲我们介绍了Android.Framework源码 ... -
Android深入浅出系列课程--Lesson11 Android.Framework源码下载及编译
2012-03-15 10:29 2260大家好,上一讲我们介 ... -
Android深入浅出系列课程---Lesson10 SHW110518_关于课程顺序的说明
2012-03-15 10:28 881大家好,上一讲我们介绍了ActivityWindowView的 ... -
Android深入浅出系列课程---Lesson9 AAF110430_ActivityWindowView的关系
2012-03-14 10:39 1071更多Android深入浅出课程列表:http://www.eo ... -
Android深入浅出系列课程---Lesson8 Android应用程序启动
2012-03-14 10:37 1163特别推荐新课程:Android ... -
Android深入浅出系列课程---Lesson7 LLY110426_Android系统启动
2012-03-14 10:35 762大家好,上一讲我们介绍了Activity状态保存,这一讲我们将 ... -
Android深入浅出系列课程---Lesson6 AAF110503_Activity状态保存
2012-03-14 10:32 897大家好,上一讲我们介绍了Android中Activity是什么 ... -
Android深入浅出系列课程---Lesson5 AAF110502_Activity是什么
2012-03-14 10:28 871大家好,上一讲我们介绍了Manifest文件的使用,这一讲我们 ... -
Android深入浅出系列课程---Lesson4-AAF110429_介绍Manifest文件的使用
2012-03-13 13:33 1004大家好,上一讲我们介绍了进程生命周期(Process Life ... -
Android深入浅出系列课程---Lesson3 AAF110427_进程生命周期Process Lifecycle
2012-03-13 13:15 983大家好,上一讲我们介 ... -
Android深入浅出系列课程---Lesson2 AAF110426_Log打开android大门
2012-03-13 13:12 932大家好,上一讲对Android中Context的介绍,这一讲将 ... -
Android深入浅出系列课程---Lesson1 AAF110430_android中context介绍
2012-03-13 13:06 848大家好,这一讲我们来介绍下Android中Context 一、 ...
相关推荐
numpy-2.1.0rc1-cp313-cp313-macosx_10_13_x86_64.whl numpy-2.1.0rc1-cp313-cp313-macosx_10_13_x86_64.whl numpy-2.1.0rc1-cp313-cp313-macosx_10_13_x86_64.whl numpy-2.1.0rc1-cp313-cp313-macosx_10_13_x86_64....
numpy-2.1.0rc1-cp312-cp312-macosx_14_0_x86_64.whl numpy-2.1.0rc1-cp312-cp312-macosx_14_0_x86_64.whl numpy-2.1.0rc1-cp312-cp312-macosx_14_0_x86_64.whl numpy-2.1.0rc1-cp312-cp312-macosx_14_0_x86_64.whl ...
numpy-2.1.0rc1-cp313-cp313t-macosx_10_13_x86_64.whl numpy-2.1.0rc1-cp313-cp313t-macosx_10_13_x86_64.whl numpy-2.1.0rc1-cp313-cp313t-macosx_10_13_x86_64.whl numpy-2.1.0rc1-cp313-cp313t-macosx_10_13_x86...
numpy-2.1.0rc1-cp313-cp313-musllinux_1_2_aarch64.whl numpy-2.1.0rc1-cp313-cp313-musllinux_1_2_aarch64.whl numpy-2.1.0rc1-cp313-cp313-musllinux_1_2_aarch64.whl numpy-2.1.0rc1-cp313-cp313-musllinux_1_2_...
numpy-2.1.0rc1-pp310-pypy310_pp73-win_amd64.whl numpy-2.1.0rc1-pp310-pypy310_pp73-win_amd64.whl numpy-2.1.0rc1-pp310-pypy310_pp73-win_amd64.whl numpy-2.1.0rc1-pp310-pypy310_pp73-win_amd64.whl ...
numpy-2.1.0rc1-cp312-cp312-musllinux_1_1_x86_64.whl numpy-2.1.0rc1-cp312-cp312-musllinux_1_1_x86_64.whl numpy-2.1.0rc1-cp312-cp312-musllinux_1_1_x86_64.whl numpy-2.1.0rc1-cp312-cp312-musllinux_1_1_x86...
numpy-2.1.0rc1-cp313-cp313-macosx_14_0_x86_64.whl numpy-2.1.0rc1-cp313-cp313-macosx_14_0_x86_64.whl numpy-2.1.0rc1-cp313-cp313-macosx_14_0_x86_64.whl numpy-2.1.0rc1-cp313-cp313-macosx_14_0_x86_64.whl ...
numpy-2.1.0rc1-cp313-cp313-musllinux_1_1_x86_64.whl numpy-2.1.0rc1-cp313-cp313-musllinux_1_1_x86_64.whl numpy-2.1.0rc1-cp313-cp313-musllinux_1_1_x86_64.whl numpy-2.1.0rc1-cp313-cp313-musllinux_1_1_x86...
numpy-2.1.0rc1-cp313-cp313-win_amd64.whl numpy-2.1.0rc1-cp313-cp313-win_amd64.whl numpy-2.1.0rc1-cp313-cp313-win_amd64.whl numpy-2.1.0rc1-cp313-cp313-win_amd64.whl numpy-2.1.0rc1-cp313-cp313-win_amd64...
numpy-2.1.0rc1-cp312-cp312-win_amd64.whl numpy-2.1.0rc1-cp312-cp312-win_amd64.whl numpy-2.1.0rc1-cp312-cp312-win_amd64.whl numpy-2.1.0rc1-cp312-cp312-win_amd64.whl numpy-2.1.0rc1-cp312-cp312-win_amd64...
numpy-2.1.0rc1-cp313-cp313t-musllinux_1_1_x86_64.whl numpy-2.1.0rc1-cp313-cp313t-musllinux_1_1_x86_64.whl numpy-2.1.0rc1-cp313-cp313t-musllinux_1_1_x86_64.whl numpy-2.1.0rc1-cp313-cp313t-musllinux_1_1...
numpy-2.1.0rc1-cp313-cp313t-macosx_14_0_x86_64.whl numpy-2.1.0rc1-cp313-cp313t-macosx_14_0_x86_64.whl numpy-2.1.0rc1-cp313-cp313t-macosx_14_0_x86_64.whl numpy-2.1.0rc1-cp313-cp313t-macosx_14_0_x86_64....
numpy-2.1.0rc1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl numpy-2.1.0rc1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl numpy-2.1.0rc1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl numpy-2.1.0rc1-pp310-pypy...
numpy-2.1.0rc1-pp310-pypy310_pp73-macosx_14_0_x86_64.whl numpy-2.1.0rc1-pp310-pypy310_pp73-macosx_14_0_x86_64.whl numpy-2.1.0rc1-pp310-pypy310_pp73-macosx_14_0_x86_64.whl numpy-2.1.0rc1-pp310-pypy310_...
numpy-2.1.0rc1-cp312-cp312-musllinux_1_2_aarch64.whl numpy-2.1.0rc1-cp312-cp312-musllinux_1_2_aarch64.whl numpy-2.1.0rc1-cp312-cp312-musllinux_1_2_aarch64.whl numpy-2.1.0rc1-cp312-cp312-musllinux_1_2_...
numpy-2.1.0rc1-cp313-cp313-macosx_11_0_arm64.whl numpy-2.1.0rc1-cp313-cp313-macosx_11_0_arm64.whl numpy-2.1.0rc1-cp313-cp313-macosx_11_0_arm64.whl numpy-2.1.0rc1-cp313-cp313-macosx_11_0_arm64.whl ...
numpy-2.1.0rc1-cp313-cp313-macosx_14_0_arm64.whl numpy-2.1.0rc1-cp313-cp313-macosx_14_0_arm64.whl numpy-2.1.0rc1-cp313-cp313-macosx_14_0_arm64.whl numpy-2.1.0rc1-cp313-cp313-macosx_14_0_arm64.whl ...
numpy-2.1.0rc1-cp313-cp313t-macosx_11_0_arm64.whl numpy-2.1.0rc1-cp313-cp313t-macosx_11_0_arm64.whl numpy-2.1.0rc1-cp313-cp313t-macosx_11_0_arm64.whl numpy-2.1.0rc1-cp313-cp313t-macosx_11_0_arm64.whl ...
numpy-2.1.0rc1-cp313-cp313t-macosx_14_0_arm64.whl numpy-2.1.0rc1-cp313-cp313t-macosx_14_0_arm64.whl numpy-2.1.0rc1-cp313-cp313t-macosx_14_0_arm64.whl numpy-2.1.0rc1-cp313-cp313t-macosx_14_0_arm64.whl ...
### 超级Android深入浅出课程思维导图 sundy #### 一、思维导图概览 本思维导图由特级Android工程师sundy老师亲自制作,旨在帮助学习者全面掌握Android架构及其核心技术,从宏观到微观进行全方位剖析。 #### 二、...