类编译,加载,链接,初始化。

类连接

类在加载进来之后,会进行连接、初始化,最后才会被使用。在连接过程中,又包括验证、准备和解析三个部分。
验证:验证类符合 Java 规范和 JVM 规范,在保证符合规范的前提下,避免危害虚拟机安全。
准备:为类的静态变量分配内存,初始化为系统的初始值。对于 final static 修饰的变量,直接赋值为用户的定义值。例如,private final static int value=123,会在准备阶段分配内存,并初始化值为 123,而如果是 private static int value=123,这个阶段 value 的值仍然为 0。
解析:将符号引用转为直接引用的过程。
**
javap 反编译命令,查看 class 文件。

初始化

初始化类的静态变量和静态代码块为用户自定义的值,初始化的顺序和 Java 源码从上到下的顺序一致。
**
JVM 会保证 () 方法的线程安全,保证同一时间只有一个线程执行。
**
**


文章作者:   future
版权声明:   本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 future !
 上一篇
StringBuffer StringBuffer
由于 StringBuffer 中的 append 方法被 Synchronized 关键字修饰,会使用到锁,从而导致性能下降。
2020-09-04 future
下一篇 
mmap零拷贝 mmap零拷贝
DirectBuffer 只优化了用户空间内部的拷贝。MappedByteBuffer,跟 DirectBuffer 不同的是,MappedByteBuffer 是通过本地类调用mmap进行文件内存映射的,省去了向用户态的内存复制。
2020-09-04 future
  目录