动态连接是将符号引用解析为直接引用的过程。当java虚拟机执行字节码时,如果它遇到一个操作码,这个操作码第一次使用一个指向另一个类的符号引用,虚拟机就必须解析这个符号引用。
1)查找被引用的类(如果必要的话就装载它)
2)将符号引用替换成为直接引用,再次遇到相同引用无需解析可直接使用。
当某个引用时非法引用时,for example:这个类不能被装载,或者不存在,但是不包含被引用的字段或者方法-----class文件检验器将抛出一个错误。在第四趟的扫描中,如果某个符号引用匹配不到正确的方法,即扫描失败,java虚拟机将抛出一个NoSuchMethodError。