Kotlin for Android
kotlin 使用 Parcelize 注解简化 Parcelable 的书写 kotlin 在 1.1.4 版本增加了对 parcelable 的支持 Android 扩展插件现在包含一个实现了 Parcelable 的自动生成器。在主构造函数中声明序列化的属性并添加一个 @Parcelize 注解,生成器就会自动创建 writeToParcel()/createFromParcel(...
kotlin 使用 Parcelize 注解简化 Parcelable 的书写 kotlin 在 1.1.4 版本增加了对 parcelable 的支持 Android 扩展插件现在包含一个实现了 Parcelable 的自动生成器。在主构造函数中声明序列化的属性并添加一个 @Parcelize 注解,生成器就会自动创建 writeToParcel()/createFromParcel(...
JVM 基础 JVM 概念 JVM 是 java 的核心,是 Java 可以一次编译到处运行的本质所在。JVM 与操作系统的关系:从图中可以看到,有了 JVM 这个抽象层之后,Java 就可以实现跨平台了。JVM 只需要保证能够正确执行 .class 文件,就可以运行在诸如 Linux、Windows、MacOS 等平台上了。 JVM 的组成和运行原理 JVM 有多种实现,使用最广泛...
JVM 指令 指令简介 计算机指令就是指挥机器工作的指示和命令,程序就是一系列按一定顺序排列的指令,执行程序的过程就是计算机的工作过程。通常一条指令包括两方面的内容:操作码和操作数,操作码决定要完成的操作,操作数指参加运算的数据及其所在的单元地址。 JVM 指令简介 Java 虚拟机的指令由一个字节长度的、代表着某种特定操作含义的数字(称为操作码,Opcode)以及跟随其后的零至多个...
JVM 和 DVM(DalvikVM) 区别 JVM 和 DVM 的区别 执行的文件格式不同 JVM 运行的是 class 字节码文件,而 dvm 运行自己定义的 dex 文件格式 是否可以同时存在多个虚拟机 JVM 只能同时存在一个实例;dvm 可同时存在多个实例(好处是,其他 dvm 挂了,不会影响其他应用,保证了系统稳定性) Java VM 是以基于栈的虚拟机 (Sta...
JVM Runtime Data Area Runtime Data Area 是存放数据的。分为五部分:Stack、Heap、Method Area、PC Register、Native Method Stack。几乎所有的关于 Java 内存方面的问题,都是集中在这块。 运行时数据区介绍 Java 中的运⾏时数据可以划分为两部分,⼀部分是线程私有的,包括 虚拟机栈、本地⽅法栈、程序...
JVM Runtime Data Area(Java 内存模式) 注意和 JMM(Java 内存模型区分开) Runtime Data Area 运行时数据区介绍 Runtime Data Area 是存放数据的。分为五部分:Stack、Heap、Method Area、PC Register、Native Method Stack。几乎所有的关于 Java 内存方面的问题,都是集中在...
Java 对象创建流程&对象内存分配策略 Java 对象创建流程 A a = new A(); 1. 类加载检查 虚拟机遇到一条 new 指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,那必须先执行相应的类加载过程。 Java 虚拟机:类加载的 5 个过程 Loa...
类加载机制 JVM 如何加载 class 文件?Class 文件中的信息进入到虚拟机后会发生什么变化?虚拟机把描述类的数据从 Class 文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的 Java 类型,这就是虚拟机的类加载机制 。 何时加载 class? 遇到 new、getstatic、putstatic 或 invokestatic 这 4...
ClassLoader 类加载器机制 1、什么是 ClassLoader? 虚拟机把描述类的数据从 Class 文件加载到内存,并对数据进行链接(验证、准备、解析)和初始化,最终形成可以被虚拟机直接使用的 Jav 对象,这就是虚拟机的类加载机制。程序在启动的时候,并不会一次性加载程序所要用的所有 class 文件,而是根据程序的需要,通过 ClassLoader 来动态加载某个 clas...
编译器 编译器优化 运行时优化 主要是解释执行和动态编译通用的一些机制,如锁进制、内存分配机制 (如 TLAB)还有专门用于优化解释执行效率的,如模板解释权、内联缓存(inline cache),用于优化虚方法调用的动态绑定 即时编译器 (JIT) 优化 JIT 优化是指将热点代码以方法为单位转化为机器码,直接运行在底层硬件之上。它采用了多种优化方式,包括静态编译器可以使用的如方法...