08 2022 档案
摘要:什么是桥接方法 在 JDK1.5 中引入了泛型,泛型类型是基于原始类型、类型擦除原理进行实现的。那么JDK1.5有了泛型怎么兼容JDK1.5之前的类? 原始类型:Java总是会自动的为泛型类型提供一个相应的原始类型。所谓原始类型就是是指泛型的第一个限定类型(从左向右),无限定类型泛型的原始类型默认为
阅读全文
摘要:什么是堆污染? 堆污染是由于泛型的使用造成的一种潜在危险。因为使用泛型参数化类内部成员变量,同一类的不同实例对象内部里面成员变量的类型可能不同, 编译阶段无法发现,运行期间才能被发现的类型转换错误问题。 上代码 public class Demo { public static void main(
阅读全文
摘要:1. 对象年龄达到阈值后进入老年代 默认情况下,对象在新生代经历了15次(CMS默认6,其他回收器默认15,以为4字节最大长度限制,最大值也是15)GC后,便会达到进入老年代的条件,将对象转移进入老年代。当然,年龄的阈值可以通过JVM参数进行设置: -XX:MaxTenuringThreshold=
阅读全文
摘要:怎么判定对象是否为垃圾对象 1.引用计数法 在每个对象中添加一个引用计数器,当有地方引用这个对象的时候,引用计数器就+1,当引用失效的时候,计数器的值就-1。任何时刻计数器为0的对象就是不可能再被使用的。 优点:容易实现 缺点:很难解决对象之间相互循环引用的问题 2.可达性分析 目前的JAVA虚拟机
阅读全文
摘要:创建对象的几种方式 1. new关键字 Object obj = new Object(); 2. 反射 3.克隆 4.反序列化 创建对象的过程 1.创建过程 (1)检查是否加载过 虚拟机解析new指令,首先检查常量池是否有类的符号引用,并且检查是否已经加载解析和初始化,没有就执行类加载过程 (2)
阅读全文
摘要:溢出区域 内存溢出分为堆内存溢出和栈内存溢出 如果虚拟机在扩展堆时无法申请到足够大的内存空间时,就会抛出outOfMemoryError 如果线程请求的栈深度大于虚拟机所允许的最大深度,则抛出StackOverflflowError 栈溢出 public class TestOverFlow { p
阅读全文
摘要:什么是JVM JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一个虚构出来的计算机,有着自己完善的硬件架构,如处理器、堆栈等。 为什么需要JVM Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代
阅读全文