JAVA-02-2023年210道面试题归纳之JAVA基础(二)(连载中)

这篇文章详细阐述了Java中的异常体系,包括运行时异常和检查异常的区别,以及类加载器的层次结构和双亲委派模型。还深入讨论了JVM的垃圾回收机制,如对象的可达性分析、GCRoots、垃圾回收算法和不同阶段。此外,提到了如何在项目中排查JVM问题以及对象从创建到被GC清理的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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中存在三个默认的类加载器:

  1. BootstrapClassLoader
  2. ExtClassLoader
  3. 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值