摘要: 所有依赖静态类型来定位方法的执行版本的分派动作成为静态分派,静态分派典型的应用场景是方法的重载。在编译阶段,javac编译器会根据参数的静态类型决定使用哪个重载版本,但很多种情况下这个版本并不是“唯一的”,往往只能确定一个“更加合适的”版本。 方法重载的优先级为: 之所以会匹配到Serializab 阅读全文
posted @ 2017-10-13 10:43 FreeAngryBird 阅读(127) 评论(0) 推荐(0) 编辑
摘要: JVM的GC分为两个主要部分,第一部分是判断对象是否已死(堆内存的垃圾回收占主要部分,方法区(metaspace)的内存回收在最新的官方文档中未给出详细解释,暂时不做讨论范围),第二部分是对内存区进行回收用于下次的内存分配。 一、判断对象是否已死 JDK 8的VM实现是Hotspot虚拟机,它采用的 阅读全文
posted @ 2017-10-04 11:04 FreeAngryBird 阅读(215) 评论(0) 推荐(0) 编辑
摘要: 注:此图适合JDK 7之前的版本,JDK 8开始增加了元数据空间,内存区结构有所变化(JDK 7将字符串常量池移除了永久代,JDK 8去永久代,迎元数据空间metaspace) 1.程序计数器:程序计数器是一块较小的内存空间,它可以看作是当前线程执行的字节码的行号指示器。 2.虚拟机栈:虚拟机栈描述 阅读全文
posted @ 2017-09-29 14:24 FreeAngryBird 阅读(224) 评论(0) 推荐(0) 编辑