-
Java程序运行过程:Java文件=>字节码文件=>源码对象=>Class文件=>ClassLoader=>JVM=>运行 Java类的加载过程:1.初始化JVM(Java虚拟机);2.产生启动类的加载器;3.加载标准扩展类加载器(子类自动加载);4.加载系统类加载器(子类自动加载);5.加载class文件(父类加载) Java类加载阶段:加载=>验证=>准备(赋初始值)=>解析(符号转直接引用)=>初始化 类加载初始化阶段特点:1.final修饰的常量将会放置于常量池,调用不会触发初始化。2.反射调用未初始化的类将先初始化。3.调用子类时若父类未初始化将先初始化父类。4.主类先初始化(main方法所在的类) Java ClassLoader的特点:查看全部
-
5种初始化: 1.遇到new,get, static这几条字节码指令,如果类没有初始化,则需要触发初始化。final修饰的类会在编译时把结果放到常量池中,即使调用也不会触发初始化。final关键字它修饰的是常量。 2.使用反射对类进行反射调用,如果类没有进行初始化,就需要先初始化 3.当初始化一个类的时候,如果发现其父类还没有进行过初始化,需要先触发父类的初始化。先初始化父类,在初始化子类。 4.虚拟机启动的时候用户需要制定一个要执行的主类,虚拟机会先初始化这个主类。 5.使用jdk1.7动态机制相关的句柄会进行初始化。查看全部
-
五种情况 进行初始化
1. new getstatic getstatic invokestatic 如果类没有初始化时,必须初始化类
2 .对类进行反射调用的时候 如果类没有进行初始化 他就需要触发初始化
3. 调动类的时候 如果他的父类没有进行初始化 需要对他的父类进行初始化
4. 当虚拟机启动时,一个类包含main()方法时,当前类需要初始化
5. 但是用动态语言支持时,如果一个java.lang.invoke.MethodHandle实例后解析结果REF_putStatic,REF_getStatic,REF_invokeStatic的方法句柄时,当该方法句柄对应的类没有初始化时,需要初始化该类。
查看全部 -
5种初始化: 1.遇到new,get, static这几条字节码指令,如果类没有初始化,则需要触发初始化。final修饰的类会在编译时把结果放到常量池中,即使调用也不会触发初始化。final关键字它修饰的是常量。 2.使用反射对类进行反射调用,如果类没有进行初始化,就需要先初始化 3.当初始化一个类的时候,如果发现其父类还没有进行过初始化,需要先触发父类的初始化。先初始化父类,在初始化子类。 4.虚拟机启动的时候用户需要制定一个要执行的主类,虚拟机会先初始化这个主类。 5.使用jdk1.7动态机制相关的句柄会进行初始化。查看全部
-
热部署原理解析
1、Java类的加载过程:初始化JVM(Java虚拟机)=>产生启动类的加载器=>加载标准扩展类加载器(子类自动加载)=>加载系统类加载器(子类自动加载)=>加载class文件(父类加载)
2、Java类加载的五个阶段:加载=>验证=>准备=>解析=>初始化
3、Java类加载器特点:
4、Java类的热部署的两种方式:类的热加载;配置Tomcat;
通过配置Tomcat实现热部署的三种方式:
① 直接把项目web文件夹放到webapps里;
② 在tomcat\conf\server.xml中的<host></host>内部添加<context/>标签;
代码如下:
<Context debug="0" docBase="D:/Imooc/web" path="/hot" privileged="true" reloadable="true"/>
③ 在%tomcat_home%\conf\Catalina\localhost中添加一个XML文件;
文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<Context docBase="D:Imooc/web" reloadable="true" />
查看全部 -
热部署与热加载的联系
查看全部 -
Tomcat实现热部署:
1.直接把项目web文件夹放到webapps中
2.在tomcat\conf\server.xml中的<host></host>内部添加<context/>标签
代码如下:(有些需要做相对应的更改)
<Context debug="0" docBase="D:/imooc/web" path="/hot" privileged="true" reloadable="true"/>
3.在%tomcat_home%\conf\Catalina\localhost中添加一个XML文件
文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<Context docBase="D:imooc/web" reloadable="true">
查看全部 -
部署方式上的区别 热部署在服务器运行时重新部署项目(不用重启服务器)—节省运维时间,提高效率。 热加载在运行时重新加载class.(Java字节码文件)—当Java类做了一定的修改时, 不需要重启服务, 编译后的字节码文件就可以更新同步查看全部
-
springloaded 方式实现热部署查看全部
-
Java类加载查看全部
-
eclipse安装Spring-tool-suite查看全部
-
mark查看全部
-
Java类的加载过程:
1.初始化JVM(Java虚拟机);2.产生启动类的加载器;3.加载标准扩展类加载器(子类自动加载);4.加载系统类加载器(子类自动加载);5.加载class文件(父类加载)
类加载的五个阶段:
加载—》验证—》准备—》解析—》初始化
【JAVA虚拟机有且只有五种需要立即初始化】
类加载初始化阶段特点:1.final修饰的常量将会放置于常量池,调用不会触发初始化。2.反射调用未初始化的类将先初始化。3.调用子类时若父类未初始化将先初始化父类。4.主类先初始化(main方法所在的类)
Java类加载器特点:
1、由AppClass Loader(系统类加载器)开始加载指定的类
2、类加载器将加载任务交给其父,如果其父找不到,再由自己去加
3、Bootstrap Loader(启动类加载器)是最顶级的类加载器
Java类的热部署:
1、类的热加载:
2、配置Tomcat:
1)直接把项目web文件夹放在webapps里
2)在tomcat\conf\server.xml中的<host></host>内部添加<context/>标签
3)在%tomcat_home%\conf\Catalina\localhost中添加一个XML
查看全部 -
热部署与热加载的区别
部署方式
热部署在服务器运行时重新部署项目
热加载在运行时重新加载class
实现原理
热部署直接重新加载整个应用
热加载在运行时重新加载class
使用场景
热部署更多的是在生产环境使用
热加载则更多的是在开发环境使用
查看全部 -
类加载的五个阶段:
加载 静态加载,方法区
验证
准备 赋初始值
解析
初始化
Java类的热部署
查看全部
举报