首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JVM类加载过程

JVM类加载过程 1.概述 从类生命周期而言,一个类包括如下阶段: 加载、验证、准备、初始化和卸载这5个阶段顺序是确定,类加载过程必须按照这种顺序进行,而解析阶段则不一定...文件 相对于类生命周期其他阶段而言,加载阶段(准确地说,是加载阶段获取类二进制字节流动作)是可控性最强阶段,因为开发人员既可以使用系统提供类加载器来完成加载,也可以自定义自己类加载器来完成加载...如果类中没有静态变量或静态代码块,那么clinit方法将不会被生成。 2. 在执行clinit方法时,必须先执行父类clinit方法。 3. clinit方法只执行一次。...();调用构造方法 x++;//x=1 因为此时x值为连接准备阶段默认值0,然后++变成1 y++;//y=1 因为此时y值为连接准备阶段默认值0,然后++变成1...x++;//x=1 因为此时x值为连接准备阶段默认值0,然后++变成1 y++;//y=1 因为此时y值为初始化阶段初值,只是这个初值刚好等于默认值0而已,然后++变成1

52520

maven实战总结,工作中常见操作

生命周期各个阶段详解 clean 生命周期阶段 描述 pre-clean 执行一些清理前需要完成工作。 clean 清理上一次构建生成文件。...插件 Maven 三套生命周期定义各个阶段不做任何实际工作,实际工作都是由插件来完成,每个生命周期阶段都是由插件目标来完成。...内置绑定 为实现快速构建,Maven 有一套内置插件绑定。三套生命周期插件绑定具体如下(其实是各个生命周期阶段与插件目标的绑定)。...自定义绑定 自定义绑定允许我们自己掌控插件目标生命周期结合。以生成项目主代码源码 jar 为例。 使用到插件和它目标为:maven-source-plugin:jar-no-fork。...将其绑定到 default 生命周期阶段 verify 上(可以任意指定三套生命周期任意阶段)。

1.3K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    maven 实战总结,工作中常见操作!

    生命周期各个阶段详解 clean 生命周期阶段 描述 pre-clean 执行一些清理前需要完成工作。 clean 清理上一次构建生成文件。...5 插件 Maven 三套生命周期定义各个阶段不做任何实际工作,实际工作都是由插件来完成,每个生命周期阶段都是由插件目标来完成。...插件绑定 内置绑定 为实现快速构建,Maven 有一套内置插件绑定。三套生命周期插件绑定具体如下(其实是各个生命周期阶段与插件目标的绑定)。...下面是默认绑定插件与生命周期关系图: 自定义绑定 自定义绑定允许我们自己掌控插件目标生命周期结合。以生成项目主代码源码 jar 为例。...使用到插件和它目标为:maven-source-plugin:jar-no-fork。将其绑定到 default 生命周期阶段 verify 上(可以任意指定三套生命周期任意阶段)。

    65720

    JVM类加载机制

    在JVM中一个类生命周期包括了:加载、验证、准备、解析、初始化、使用、卸载7个阶段,其中验证、准备和解析统称为连接 加载 加载是第一阶段,因为此虚拟机中还没有class相关信息,必须将class...加载过程主要分为以下3个步骤: 根据类全限定名取得类二进制流 注意这里指定是类二进制流而不是说.class文件,由此可知这是个典型面向接口编程呀,基于这个机制,我们可以把类放在任何地方。...比如:在核心代码从数据库中获取、动态代理生成类、JSP等其他文件转换 讲类二进制流转化为方法区运行时数据结构 在堆中生成类对应java.lang.Class对象 验证 验证阶段所做操作类似于我们一个接口接收到外部请求之后首先需要做事...: a=0b=0L 而final类型变量则没有这一步骤,设置初始值时候跳过零值设置初始值 解析 解析阶段主要是将符合引用替换为直接引用 符合引用是使用一组符合来描述所引用目标,简单来说是一个假地址...,引用目标可能还没加载到内存中 直接引用则是一个直接指向目标的指针,真实地址 解析动作主要针对类或接口、字段、类方法、接口方法、方法类型、方法句柄和调用点限定符7类符号引用 初始化 初始化阶段主要是为类静态变量

    36710

    实战总结,一文读懂 Maven 操作!

    生命周期各个阶段详解 clean 生命周期阶段 描述 pre-clean 执行一些清理前需要完成工作。 clean 清理上一次构建生成文件。...5 插件 Maven 三套生命周期定义各个阶段不做任何实际工作,实际工作都是由插件来完成,每个生命周期阶段都是由插件目标来完成。...插件绑定 内置绑定 为实现快速构建,Maven 有一套内置插件绑定。三套生命周期插件绑定具体如下(其实是各个生命周期阶段与插件目标的绑定)。...下面是默认绑定插件与生命周期关系图: 自定义绑定 自定义绑定允许我们自己掌控插件目标生命周期结合。以生成项目主代码源码 jar 为例。...使用到插件和它目标为:maven-source-plugin:jar-no-fork。将其绑定到 default 生命周期阶段 verify 上(可以任意指定三套生命周期任意阶段)。

    1.1K10

    JVM学习记录-类加载过程

    整个生命周期7个阶段是:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using...在内存中生成一个代表这个类java.lang.Class对象,作为方法区这个类各种数据访问入口。...保证跳转指令不会跳转到方法体以为字节码指令上。保证方法体上类型转换是有效,例如:可以把一个子类对象赋值给父类数据类型,但是不能把父类对象赋值给子类数据类型。...值在准备阶段被设置初始值为0而不是666,因为此尚未开始执行任何Java方法,而把value赋值为666putstatic指令是程序编译后,存放于类构造器()方法之中,所以把value...上面说到在“通常情况”下初始值是零值,在非“通常情况”下也就是类字段属性中存在常量属性时候,那么在准备阶段类变量就会被初始化为常量属性所指定值。

    33420

    头条一面竟然问我Maven?

    仓库管理 生命周期 插件和目标 继承 聚合 Maven 核心程序中仅仅定义了抽象生命周期,而具体操作则是由 Maven 插件来完成。...比 如,运行 mvn clean,这个 clean 是 Clean 生命周期一个阶段。有 Clean 生命周期,也有 clean 阶段。 5.6.2....Clean 生命周期 Clean 生命周期一共包含了三个阶段: pre-clean:执行一些需要在 clean 之前完成工作 clean:移除所有上一次构建生成文件 post-clean:执行一些需要在...:将生成站点文档部署到特定服务器上 这里经常用到是 site 阶段和 site-deploy 阶段,用以生成和发布 Maven 站点,这可是 Maven 相当强大 功能,Manager 比较喜欢...插件和目标 Maven 核心仅仅定义了抽象生命周期,具体任务都是交由插件完成 每个插件都能实现多个功能,每个功能就是一个插件目标 Maven 生命周期与插件目标相互绑定,以完成某个具体构建任务

    87210

    深入理解React生命周期

    [I] 构造React组件两种方法 React.createClass() class MyComponent extends React.Component [II] React组件几个生命周期阶段...以告知React加载内容位置 在此次调用中,React开始处理传递来元素,并生成组件实例 该元素type属性指向组件,用来生成实例,并向其传递props 3.3 初始化和构造函数 在从元素初始化组件过程中...() 是第一个真正生命周期方法 该方法仅在初始化渲染之前被调用一次 因为是在render()之前调用,所以无法访问DOM等原生UI 因为子元素等尚未创建,也无法访问refs 可以对this.props...,区别在于每次更新过程,该方法都会被调用 因为此时重新渲染尚未完成,所以组件可以访问到旧UI和即将过期refs,可以在此时发起CSS动画等,也是调度事件好时机 可以比较新老props和state,...根据每个元素上生成指定keys(https://facebook.github.io/react/docs/lists-and-keys.html),判断其是新建、删除还是需要更新 对于keys相同元素

    1.3K10

    maven使用教程_maven使用教程

    借助maven可以将一个项目拆分成多个工程 项目中需要jar必须要手动”复制”,”粘贴”到WEB-INF/lib目录下,带来问题是:同样jar包文件重复出现在不同项目工程中,浪费空间。...”仓库”中指定位置 部署:将动态web工程生成war包复制到servlet容器指定目录下,使其可以运行 maven核心概念 约定目录结构 POM 坐标 依赖 仓库 生命周期/插件/目标 继承 耦合...,但是具体工作必须由特定插件来完成,而插件本身并不包含在maven核心程序中。...:servlet.jar 生命周期 各个环节构建顺序:不能打乱顺序,必须按照既定正确顺序来执行,maven核心程序中定义了抽象生命周期生命周期中各个阶段具体任务是由插件来完成,maven无论现在要执行生命周期哪一个阶段...插件和目标 生命周期各个阶段紧紧定义了要执行任务是什么 各个阶段和插件目标是对应 相似的目标由特定插件来完成 可以将目标看做”调用插件功能命令” 依赖 依赖传递性 如果A依赖B,B依赖C

    1.3K10

    聊聊如何自定义实现maven插件

    ,compile就是目标的名称 @phase :默认将该目标绑定至default声明周期某个阶段,这样在配置使用插件目标时,就无需声明phase,如maven-surefire-plugintest...目标带有@phase tes标注 @requiresDependencyResolution :在运行mojo之前必须解析所有指定范围依赖,如maven-surefire-plugintest目标带有...如果是本插件目标,则直接调用目标名称,否则,使用“prefix:goal” @execute phase="":在运行该目标前,让maven先运行一个并行生命周期,到指定阶段为止。...到phase执行完,才执行插件目标 @execute lifecycle="" phase = "":在运行该目标前,让maven先运行一个自定义生命周期,到指定阶段为止。...maven生命周期哪个阶段触发执行 插件可在如下阶段触发执行 @Parameter这个功能作用有两个 It provides hooks to allow the user to adjust

    98130

    聊聊如何自定义实现maven插件

    test目标带有@phase tes标注 @requiresDependencyResolution :在运行mojo之前必须解析所有指定范围依赖,如maven-surefire-plugin...test目标带有requiresDependencyResolution test标注,表示执行测试前,所有测试范围依赖必须得到解析 @requiresProject :该目标是否必须在一个...如果是本插件目标,则直接调用目标名称,否则,使用“prefix:goal” @execute phase="":在运行该目标前,让maven先运行一个并行生命周期,到指定阶段为止。...到phase执行完,才执行插件目标 @execute lifecycle="" phase = "":在运行该目标前,让maven先运行一个自定义生命周期,到指定阶段为止...maven生命周期哪个阶段触发执行 插件可在如下阶段触发执行 [image.png] @Parameter这个功能作用有两个 It provides hooks to allow the user

    1.3K30

    快速学习Maven-Maven常用命令

    (Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)逻辑。...) 使用 maven 完成项目的构建,项目构建包括:清理、编译、测试、部署等过程,maven 将这些过程规范为一个生命周期,如下所示是生命周期各各阶段: ?...一组标准集合 maven 将整个项目管理过程定义一组标准,比如:通过 maven 构建工程有标准目录结构,有标准生命周期阶段、依赖管理有标准坐标定义等。...插件(plugin)目标(goal) maven 管理项目生命周期过程都是基于插件完成。 3.2 idea 开发 maven 项目 在实战环境中,我们都会使用流行工具来开发项目。...system:system 范围依赖与 provided 类似,但是你必须显式提供一个对于本地系统中 JAR文件路径,需要指定 systemPath 磁盘路径,system依赖不推荐使用。

    77920

    《Maven实战》笔记

    jar:jar:jar插件jar目标 Archetype:快速生成项目骨架,感觉和SpringBootStarter很像,都是一堆jar包集合 第四章 背景案例 略 第五章 坐标和依赖 Maven...一样,使用此依赖范围必须通过systemPath元素显示地指定依赖文件路径,systemPath可使用环境变量,例如${java.home}/lib/rt.jar。...项目,maven内置绑定了一些核心生命周期与插件目标 支持自定义绑定 Maven 生命周期阶段与插件目标之间绑定关系 clean 生命周期 clean 生命周期阶段 插件目标...生命周期阶段 插件目标 执行任务 process-resources maven-resources-plugin:resources 复制主资源文件至主输出目录 compile maven-compiler-plugin...site 生命周期 site 生命周期阶段 插件目标 pre-site site maven-site-plugin:site post-site site-deploy

    95610

    JVM-10.类加载

    类加载时机 类生命周期 类从加载到内存到写在出内存,生命周期包括: 加载(Loading) 验证(Verification) 准备(Preparation) 解析(Resolution) 初始化(Initialization...在一个阶段执行过程中调用,激活另外一个阶段 加载时机根据JVM不同而不同 有且只有以下5种情况必须初始化: 遇到new, getstatic, putstatic I或者incokestatic...类加载过程 2.1 加载 加载阶段,JVM做三件事: 通过一个类全限定名来获取此类二进制字节流 将这个字节流代表静态存储结构转化为方法区运行时数据结构 在内存中生成一个代表这个类java.lang.Clas...保证跳转指令不会跳转到方法体以外字节码指令上 保证方法体中类型转换有效 4.符号引用验证:在连接第三个阶段——解析阶段发生。...父类()方法肯定会执行,所以父类静态语句块要先于子类变量赋值操作 ()对于类或者接口不是必须,如果一个类没有静态语句块也没有对变量赋值操作,编译器可以不生成<clinit

    38420

    活久见!64 张图带你 Maven 实战通关

    Maven 核心程序中定义了抽象生命周期生命周期中各个阶段具体任务是由插件来完成。有三套相互独立生命周期,各个构建环节执行顺序不能打乱,必须按照既定正确顺序来执行。...mvn -clean,也就等同于 Clean 生命周期第一个阶段 mvn pre-clean clean。...这里我们强调一下:「在maven中,只要在同一个生命周期,你执行后面的阶段,那么前面的阶段也会被执行,而且不需要额外去输入前面的阶段」。...这里经常用到是 site 阶段和 site-deploy 阶段,用来生成和发布 maven 站点,这是 Maven 比较强大功能,文档及统计数据自动生成。...Maven 插件原理 什么是 Maven 插件 上面我们讲了 Maven 生命周期,我们知道 Maven 核心是生命周期生命周期指定了 Maven 命令执行流程顺序。

    63231

    maven使用总结

    本地依赖,不在maven中央仓库 这个必须和systemPath结合使用,用来指定本地依赖位置 <!...maven生命周期有三个部分组成,分别为clean生命周期,site生命周期,default生命周期 生命周期调用特点 三大生命周期中也会包含各个阶段,并且各个阶段是有序进行,maven为了实现构建自动化...,编译、测试、打包、部署 包括如下23个生命周期阶段生命周期阶段 描述 validate 检查工程配置是否正确,完成构建过程所有必要信息是否能够获取到。...process-classes 处理编译生成文件,例如 Java Class 字节码加强和优化。 generate-test-sources 生成编译阶段需要包含任何测试源代码。...包含以下阶段 pre-site:执行一些需要在生成站点文档之前完成工作 site:生成项目的站点文档 post-site:执行一些需要生成站点文档之后完成工作 site-deploy:将生成站点文档部署到特定服务器上

    49310

    Servlet生命周期与HTTP协议

    这个实例化对象有一个生命周期,也就是所谓Servlet生命周期。 Servlet生命周期分为三个阶段: 初始化阶段 有两种情况下会进入初始化阶段,这个阶段是Servlet生命周期开始。...然后可以通过调用HttpRequest对象有关方法获取http请求信息,同时也可以再调用HttpResponse对象有关方法,生成响应数据,最后web服务器把响应结果反馈给客户端。...以上这个接收服务端请求并反馈处理结果过程就是响应客户请求阶段。 终止(结束)阶段 有两种方式可以进入终止阶段,这个阶段也就是Servlet生命周期结束。...——建议客户访问其他URL或访问方式 304——客户端已经执行了GET,但文件未变化 305——请求资源必须从服务器指定地址得到 306——前一版本HTTP中使用代码,现行版本中不再使用 307—...上面这种直接通过URL访问默认是get访问类型,可以看到请求头内容里第一段写就是GET类型。我们可以写一个简单表单,指定post访问类型,看看访问后请求头会显示什么: Html代码示例: ?

    68320

    MAVEN简介之——pom.xml

    default是处理你项目部署;clean生命周期是清楚你项目的;site生命周期生成项目文档。...default生命周期由一下阶段组成: validate:验证项目正确性和所有需要信息是否正确; compile:编译项目源代码; test:用单元测试框架测试编译后代码,测试阶段不需要代码打包和部署...你只需要调用最后一个执行命令即可。 下面的命令可以清除本地构建并重新打包发布到远程仓库: mvn clean deploy 每一个构建阶段都是由插件目标组成,一个插件目标代表着一个特殊工作。...它可以被绑定到多个构建阶段中,如果插件目标没有绑定到构建阶段中, 可以直接使用命令去执行。它们执行顺序取决于命令顺序。...super pom中配置在你pom中是有效

    52310

    MAVEN简介之——pom.xml

    default是处理你项目部署;clean生命周期是清楚你项目的;site生命周期生成项目文档。...default生命周期由一下阶段组成: validate:验证项目正确性和所有需要信息是否正确; compile:编译项目源代码; test:用单元测试框架测试编译后代码,测试阶段不需要代码打包和部署...你只需要调用最后一个执行命令即可。 下面的命令可以清除本地构建并重新打包发布到远程仓库: mvn clean deploy 每一个构建阶段都是由插件目标组成,一个插件目标代表着一个特殊工作。...它可以被绑定到多个构建阶段中,如果插件目标没有绑定到构建阶段中, 可以直接使用命令去执行。它们执行顺序取决于命令顺序。...super pom中配置在你pom中是有效

    86320
    领券