- 下列哪种异常是检查型异常,需要在编写程序时声明()
A. NullPointerException
B. ClassCastException
C. FileNotFoundException
D. IndexOutOfBoundsException
答案:C
分析:NullPointerException 空指针异常
ClassCastException 类型转换异常
IndexOutOfBoundsException 索引超出边界的异常
以上这些异常都是程序在运行时发生的异常,所以不需要在编写程序时声
明 - 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调小,如&
异常处理面试题详解
最新推荐文章于 2022-06-12 15:22:28 发布
本文详细解析了Java中的异常处理,包括检查型异常和运行时异常的区别,以及各类OutOfMemoryError的原因和解决策略。此外,还介绍了常见的运行时异常、Exception类的特性以及try-catch-finally的执行流程。最后,探讨了throws和throw的用法差异,为面试准备提供宝贵资料。
摘要由CSDN通过智能技术生成