JAVA-02-2023年210道面试题归纳之JAVA基础(二)(连载中)
20.Java中的异常体系是怎么样的
- Java中的所有异常都来自顶级父类Throwable
- Throwable下有俩个字类Exception和Error
- Error是程序无法处理的错误,一旦出现这个错误,则程序将被迫停止运行
- Exception不会导致程序停止,又分为两个部分RunTimeException运行时异常和CheckedException检查异常
- RuntimeException常常发生在程序运行过程中,会导致程序当前线程执行失败
- CheckedException常常发生在程序编译过程中,会导致程序编译不通过
21.Java中有哪些类加载器
JDK自带三个类加载器:boostrap ClassLoader、ExtClassLoader、AppClassLoader。
- BootStrapClassLoader是ExtClassLoader的父类加载器,默认负责加载%JAVA_HOME%lib下的jar包和class文件。
- ExtClassLoader是AppClassLoader的父类加载器,负责加载%JAVA_HOME%lib/ext文件下的jar包和class类。
- AppClassLoader是自定义加载器的父类,负责加载classpath下的类文件
22.说说类加载器双亲委派模型
JVM中存在三个默认的类加载器:
- BootstrapClassLoader
- ExtClassLoader
- AppClassLodaer
AppClassLoader的父加载器是ExtClassLoader,ExtClassLoader的父加载器BootstrapClassLoder。
JVM在加载一个类时,会调用AppClassLoader的loadClass方法来加载这个类,不过在这个方法中,会先使用ExtClassLoader的loadClass来加载类,同样ExtClassLoader的loadClass方法中会先使用BootstrapClassLoader来加载类,如果BootstrapClassLoader加载到了就直接成功,如果BootstrapClassLoader没有加载到,那么ExtClassLoader就会尝试自己去加载该类,如果没有加载到,那么则会由AppClassloader来加载这个类
所以,双亲委派指的是,JVM在加载类时,会委派给Ext和Bootstrap进行加载,如果没加载到才由自己进加载。
23.GC如何判断对象可以被回收
- 引用计数法:每个对象有一个引用计数属性,新增一个引用计数加1,引用释放计数减1,计数为0可以回收。
- 可达性分析法:从GC Ro