1,jvm Classload默认几个重要方法介绍

findClass:Finds and loads the class with the specified name from the URL search path.找到class文件并把字节码载入到内存中,假设自己定义的载入器仅覆盖了findClass,而未覆盖loadClass(即载入规则一样,但载入路径不同);则调用getClass().getClassLoader()返回的仍然是AppClassLoader!由于真正load类的,还是AppClassLoader

defineClass:Converts an array of bytes into an instance of class. 创建类对象,将字节流解析成JVM可以识别的Class对象

loadClass:Loads the class with the specified binary name.自己定义的载入器能够覆盖该方法loadClass(),以便定义不同的载入机制.比如Servlet中的WebappClassLoader覆盖了该方法,在WEB-INFO/classes文件夹下查找类文件;在载入时,假设成功,则缓存到ResourceEntry对象。——不同的载入机制。



2,其他一些方法

resolveClass:载入完字节码后,会依据须要进行验证、解析

defineClass:字节流解析成JVM可以识别的Class对象。不可覆盖

findLoadedClass:假设类已经载入过,则直接返回 Returns the class with the given name binary name if this loader has been recorded by the Java virtual machine as an initiating



3,调用规则:loadClass-->findClass-->defineClass--->resolveClass(可选)

4,JVM默认不能热部署类,由于载入类时会去调用findLoadedClass(),假设类已被载入,就不会再次载入。JVM推断类是否被载入有两个条件:完整类名是否一样、ClassLoader是否是同一个。







loadClass方法代码:

   

protected Class<?> loadClass(String name, boolean resolve)
throws ClassNotFoundException
{
synchronized (getClassLoadingLock(name)) {
// First, check if the class has already been loaded
Class c = findLoadedClass(name);
if (c == null) {
long t0 = System.nanoTime();
try {
if (parent != null) {
c = parent.loadClass(name, false);
} else {
c = findBootstrapClassOrNull(name);
}
} catch (ClassNotFoundException e) {
// ClassNotFoundException thrown if class not found
// from the non-null parent class loader
} if (c == null) {
// If still not found, then invoke findClass in order
// to find the class.
long t1 = System.nanoTime();
c = findClass(name); // this is the defining class loader; record the stats
sun.misc.PerfCounter.getParentDelegationTime().addTime(t1 - t0);
sun.misc.PerfCounter.getFindClassTime().addElapsedTimeFrom(t1);
sun.misc.PerfCounter.getFindClasses().increment();
}
}
if (resolve) {
resolveClass(c);
}
return c;
}
}

jvm Classload method介绍的更多相关文章

  1. 关于jvm的常识介绍

    1.关于jvm的组成(只介绍1.8,以前的版本不多介绍) vm stack,native method stack,program counter register,heap,metaspace 2. ...

  2. 一个性能较好的jvm參数配置以及jvm的简单介绍

    一个性能较好的webserverjvm參数配置: -server //服务器模式 -Xmx2g //JVM最大同意分配的堆内存,按需分配 -Xms2g //JVM初始分配的堆内存.一般和Xmx配置成一 ...

  3. jvm监控命令介绍

    1.jstack介绍 如果java程序崩溃生成core文件,jstack工具可以用来获得core文件的java stack和native stack的信息,从而可以轻松地知道java程序是如何崩溃和在 ...

  4. JVM内存区域介绍

    学习JVM第一个要了解的就是JVM的内存区域. Java虚拟机在运行时会从操作系统内存中划分一部分出来作为JVM内存,而JVM内存又划分为以下几个区域: 大体上可以分为两种: 线程共享数据区 该类型的 ...

  5. JVM 整体流程介绍

    一. JVM自身的物理结构 从图中可以看出 JVM 的主要组成部分 ClassLoader(类加载器),Runtime Data Area(运行时数据区,内存分区),Execution Engine( ...

  6. 常见JVM监控工具用法介绍

    VisualVM是一种集成了多个JDK命令行工具的可视化工具,它能为您提供强大的分析能力.所有这些都是免费的!它囊括的命令行工具包括jps,jstat,jmap,jinfo,jstack,JConso ...

  7. jvm垃圾回收器介绍

    上篇文章中我们讨论了jvm的内存区域,这篇文章我们来讨论针对的内存区域的垃圾回收机制. 其实针对垃圾回收我们通常考虑三个问题:1.哪些内存需要回收?2.什么时候回收?3.如何回收?下面我们针对这三个问 ...

  8. JVM -XX: 参数介绍(转)

    垃圾回收器相关常用参数: 功能开关: 参数 默认值或限制 说明 参数 默认值 功能 -XX:-AllowUserSignalHandlers 限于Linux和Solaris,默认不启用 允许为java ...

  9. JVM -XX: 参数介绍

    功能开关: 参数 默认值或限制 说明 参数 默认值 功能 -XX:-AllowUserSignalHandlers 限于Linux和Solaris,默认不启用 允许为java进程安装信号处理器,信号处 ...

随机推荐

  1. 详解H3C交换机“端口安全”功能

    以下内容摘自正在全面热销的最新网络设备图书“豪华四件套”之一——<H3C交换机配置与管理完全手册>(第二版)(其余三本分别是:<Cisco交换机配置与管理完全手册>(第二版). ...

  2. 5.7.1.3 Global 对象的属性

    Global对象还包含了一些属性,例如,特殊的值undefined.NaN以及Infinity都是Global对象的属性.此外,所有原生引用类型的构造函数,像Object和Function,也都是Gl ...

  3. A Byte of Python 笔记(10)输入/输出:文件和储存器

    第12章  输入/输出 大多数情况下,我们需要程序与用户交互.从用户得到输入,然后打印一些结果. 可以分别使用 raw_input 和 print 语句来完成这些功能.对于输出,可以使用多种多样的 s ...

  4. 帝国cms7.2灵动标签万能教程

    学完本文,就完全能掌握帝国模板开发制作啦!这里只介绍sql语句调用方法(方便,快捷!) 灵动标签语法: [e:loop={,24,0}] 模板内容 [/e:loop] 详细解释:黄色部分:条件语句,即 ...

  5. 阿里云ECS每天一件事D3:挂载硬盘

    阿里云的系统盘通常都不大,对于我们的日常使用,基本不足,因此都会额外购买至少一块硬盘,作为存储数据之用. 数据盘要经过分区.格式化.挂载三个步骤,方能正常使用.  1.数据盘的分区 先使用fdisk命 ...

  6. RFID标签天线的三种制作方法

    在RFID标签中,天线层是主要的功能层,其目标是传输最大的能量进出标签芯片.RFID天线是按照射频识别所要求的功能而设计的电子线路,将导电银浆或导电碳浆网印在PVC.PC或PET上,再与面层.保护层和 ...

  7. JAVA FILE or I/O学习 - Desktop本地程序学习

    public class DesktopKnow { public void know() { try { Desktop.getDesktop().open(new File("C:\\P ...

  8. HDU 1796 容斥原理 How many integers can you find

    题目连接   http://acm.hdu.edu.cn/showproblem.php?pid=1796 处男容斥原理  纪念一下  TMD看了好久才明白DFS... 先贴代码后解释 #includ ...

  9. asp.NET配置

    添加用户 1.选择创建用户   2 可以使用网站管理工具来管理应用程序的所有安全设置.可以设置用户和密码(身份验证),可以创建角色(用户组),还可以创建权限(用于控制对应用程序各个部分的访问的规则). ...

  10. windows cmd: 打开windows系统程序或服务的常见命令

    Windows常用CMD命令 http://www.cnblogs.com/sbaicl/archive/2013/03/05/2944001.html 其实查找Windows自带程序的命令行很简单, ...