异常处理面试题详解

本文详细解析了Java中的异常处理,包括检查型异常和运行时异常的区别,以及各类OutOfMemoryError的原因和解决策略。此外,还介绍了常见的运行时异常、Exception类的特性以及try-catch-finally的执行流程。最后,探讨了throws和throw的用法差异,为面试准备提供宝贵资料。
摘要由CSDN通过智能技术生成
  1. 下列哪种异常是检查型异常,需要在编写程序时声明()
    A. NullPointerException
    B. ClassCastException
    C. FileNotFoundException
    D. IndexOutOfBoundsException
    答案:C
    分析:NullPointerException 空指针异常
    ClassCastException 类型转换异常
    IndexOutOfBoundsException 索引超出边界的异常
    以上这些异常都是程序在运行时发生的异常,所以不需要在编写程序时声
  2. Java 出现 OutOf MemoryError(OOM 错误)的原因有哪
    些?出现 OOM 错误后,怎么解决?
    答:
    OutOf MemoryError 这种错误可以细分为多种不同的错误,每种错误都有
    自身的原因和解决办法,如下所示:
    java.lang.OutOfMemoryError: Java heap space
    错误原因:此 OOM 是由于 JVM 中 heap 的最大值不满足需要。
    解决方法:1) 调高 heap 的最大值,即-Xmx 的值调大。2) 如果你的程序
    存在内存泄漏,一味的增加 heap 空间也只是推迟该错误出现的时间而已,
    所以要检查程序是否存在内存泄漏。
    java.lang.OutOfMemoryError: GC overhead limit exceeded
    错误原因:此 OOM 是由于 JVM 在 GC 时,对象过多,导致内存溢出,建
    议调整 GC 的策略,在一定比例下开始 GC 而不要使用默认的策略,或者将
    新代和老代设置合适的大小,需要进行微调存活率。
    解决方法:改变 GC 策略,在老代 80%时就是开始 GC,并且将
    -XX:SurvivorRatio(-XX:SurvivorRatio=8)和-XX:NewRatio
    (-XX:NewRatio=4)设置的更合理。
    java.lang.OutOfMemoryError: Java perm space
    错误原因:此 OOM 是由于 JVM 中 perm 的最大值不满足需要。
    解决方法:调高 heap 的最大值,即-XX:MaxPermSize 的值调大。
    另外,注意一点,Perm 一般是在 JVM 启动时加载类进来,如果是 JVM 运
    行较长一段时间而不是刚启动后溢出的话,很有可能是由于运行时有类被动
    态加载进来,此时建议用 CMS 策略中的类卸载配置。如:
    -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled。 java.lang.OutOfMemoryError: unable to create new native thread
    错误原因:当 JVM 向 OS 请求创建一个新线程时,而 OS 却由于内存不足无
    法创建新的 native 线程。
    解决方法:如果 JVM 内存调的过大或者可利用率小于 20%,可以建议将
    heap及perm的最大值下调,并将线程栈调小,即-Xss调小,如&
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值