zoukankan      html  css  js  c++  java
  • jvm前奏篇

    javac编译原理 源文件----->类文件

      词法分析------>语法分析------>语义分析----字节码生成器------.class 文件

    javap  反编译

    之所以能到处运行就是 因为 class文件   就是 通过 javaformat  规范

    java 类加载机制:

    类文件要运行在JVM中,装载、链接、初始化

     装载:

    ① 就是查找和导入class 文件 将类文件转换为 二进制流  ClassLoader 类加载,不同的类加载器,加载不同区域的class文件

    ② 讲二进制流的静态结构,转换到 运行时数据区的某一块区域【方法区】

     同名的类 由上层去加载,这种模式叫做 双亲委派模型  (由父亲去加载,父亲加载到了 自己就不去加载了) 如果想打破这种规律,就是 重写 classLoader里面的 findClass方法  此处需要做实验 破坏双亲委派模型

    双亲委派模型很好地解决了各个类加载器的基础类统一问题(越是基础的类越由上层加载器加载),基础类被其他的对象锁调用,但是如果基础类需要加载调回其他用户的代码的时候模型便会被破坏。

    双亲委派模型工作过程是:如果一个类加载器收到类加载的请求,它首先不会自己去尝试加载这个类,而是把这个请求委派给父类加载器完成。每个类加载器都是如此,只有当父加载器在自己的搜索范围内找不到指定的类时(即ClassNotFoundException),子加载器才会尝试自己去加载。

    链接:

    一、验证

          验证数据的有效性

    二、准备

          为类的静态变量分配内存、初始化值 为默认值

    三、解析

          把类中的符号引号转化为直接引用

    初始化:

    类的静态变量,赋值真正的值

  • 相关阅读:
    Python 创建包含列表的元组
    Python 创建特殊元组tuple
    Bean named 'XXX' is expected to be of type [XXX] but was actually of type [com.sun.proxy.$Proxy7
    小米手机安装Google框架
    前端框架
    Microsoft Project项目管理工具
    Spring AOP无法拦截Controller的原因
    sql分页优化
    npm和Node.js简介
    启动OpenOffice服务
  • 原文地址:https://www.cnblogs.com/dayao666/p/12054671.html
Copyright © 2011-2022 走看看