zoukankan      html  css  js  c++  java
  • 《深入理解java虚拟机》学习笔记-----郑雨迪

    一、学习java虚拟机的原因

    二、java代码的运行

    java -c 编译成.class 文件(java字节码)

    java字节码(.class文件)无法直接执行,因此,java虚拟机需要将字节码编译成机器码。在HotSpot里面,上述翻译过程有两种方式:(1)解释执行:即逐条将字节码翻译成机器码并执行(2)即时编译JIT:即将一个方法中包含的所有字节码编译成机器码后再执行。

    前者的优势在于无需等待编译,而后者的优势在于实际运行速度更快。HotSpot 默认采用混合模式,综合了解释执行和即时编译,两者的优点。它会先解释执行字节码,而后将其中反复执行的热点代

    代码,以方法为单位进行即时编译。

    三、java虚拟机如何加载java类?

    .class文件到内存中的类:加载、链接、初始化

    加载,查找字节流,通过类加载器创建类,使用双亲委托模型。加载后类的唯一性由类的全名和加载类实例共同决定。
    链接,将创建成的类合并至java虚拟机,使之可以被执行。链接分为验证、准备和解析。验证判断加载的字节流合法性,准备是为静态字段分配内存及创建方法字段的符号引用。解析是将符号引用解析为实际引用。
    初始化,就是初始化静态字段和静态代码块,类的初始化只会被执行一次,是线程安全的,所以可以被用于实现单例的延迟初始化。

    四、垃圾回收

  • 相关阅读:
    shell script数组使用函数输出
    Yii2文件上传
    ubuntu 安装遇到黑屏
    使用函数
    ionCube 安装
    记录LNMP环境彻底删除绑定域名及网站文件夹/文件的过程
    lnmp环境 开启pathinfo
    国外知名设计教程网址收集
    26个国外在线教育网站
    前端学习网站汇总
  • 原文地址:https://www.cnblogs.com/zgzf/p/10724469.html
Copyright © 2011-2022 走看看