![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JAVA经典面试题
补充一些知识点,一些经常遇到的面试题
woniu_li
这个作者很懒,什么都没留下…
展开
-
JVM垃圾回收机制
学习垃圾回收之前首先看一下JVM内存结构方法区: 也称“永久代(permanent generation)”,用于储存虚拟机加载的类信息,常量,静态变量,是各个线程共享的内存区域,运行时常量池也是方法区的一部分,Class文件中除了有类的版本,字段,方法,接口等描述信息外,还有一项信息就是常量池,用于存放编译器生成的各种符号引用,这部分内容将在类加载后放到方法区的运行时常量池中.。栈:描述的是java方法执行的内存模型,每个方法被执行的时候,都会创建一个“栈帧”用于存储局部变量(包括参数),操作栈,原创 2020-10-19 16:33:16 · 117 阅读 · 0 评论 -
类加载机制
1.类加载类的加载是指将类的 .class文件加载到内存中,将其放到运行时数据区的方法区内,然后再堆区内创建一个java.lang.Class对象,用来封装类在方法去内的数据结构。2.什么时候启动类加载类加载器并不需要等到某个类被“首次主动使用”时再加载它,JVM规范允许类加载器在预料某个类将要被使用时就预先加载它。对于初始化阶段、JVM规定了有且只有5中情况必须立即对类进行初始化。1. 使用new实例化对象、读取或设置一个静态字段(被final修饰、已在编译器把结果放入常量池的静态字段原创 2020-08-10 18:59:48 · 154 阅读 · 0 评论 -
JVM如何判断对象是否可以被回收
finalize():方法是一个在Object类中定义的方法,如果我们重写了finalize()方法,那么在对象被回收之前将会调用finalize()方法,如果我们在finalize()方法中将对象和某个还在生命周期的对象关联上,那么这个对象还有可能在回收之前被复活,当然这种机会只有一次,当第二次遇到回收时,将不会再调用finalize方法。Java对象是否存活的判断算法——根搜索算法。这个算法的思路其实很简单,它把内存中的每一个对象都看作一个节点,并且定义了一些对象作为根节点“GC Roots”.原创 2020-09-24 09:25:42 · 576 阅读 · 0 评论 -
Java中的异常处理机制
Java中的异常处理机制只要实现自Throwable接口,继承关系如下:可以看出异常处理主要分为两种:1. Error表示恢复不是不可能但很困难的情况下的一种严重问题。比如说底层系统出新错误。不可能指望程序能处理这样的情况。2.Exception表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。3. Exection又可以分为两种:非运行时异常(Checked Exception)运行时异常(RuntimeException)4. 运行时异常:定义:Ru原创 2020-09-09 15:55:59 · 157 阅读 · 0 评论 -
Integer值的缓存范围
范围: -128 ~ 127先上代码为什么a == b 为true? c == d 为falsejava为了提高效率,初始化了 -128~127之间的整数对象,所以在赋值时,会先调用 Integer 的 valueOf()方法,判断是否符合 取值范围,如果符合进入IntegerCache的数组中根据 [i + (-IntegerCache.low)]下标取值,如果不符合,就new一个新的对象。原码...原创 2020-07-29 16:51:53 · 6579 阅读 · 2 评论 -
Collections 和 Collection 的区别
Collections和Collection是不同的,前者是集合的操作类,后者是集合接口。Collection是集合接口:在java类库中有很多具体的实现类,为各种具体的集合提供了最大化的统一操作方式。Collections是包装类:包含各种有关集合操作的静态方法,此类不能实例化...原创 2020-07-29 16:47:12 · 235 阅读 · 0 评论 -
final 和 finally 和 finalize 的区别
1.final java中的关键字,用于修饰属性、方法、和类修饰属性:被final修饰的变量必须给定初始值,并且在以后的引用中只能读取,不能修改。修饰方法:被final修饰的方法只能使用,不能修改。修饰类:被final修饰的类,不能派生出新的子类,不能作为父类被继承,因此一个类不能同时被声明成abstract抽象类和final类。2.finally java的一种异常处理机制finally 语句块的代码总会执行(System.exit(1)除外:退出整个java程序),而不管有误异常发生。使用f原创 2020-07-29 16:46:10 · 166 阅读 · 0 评论