点击上方 **好好学java **,选择 **星标 **公众号
重磅资讯、干货,第一时间送达
今日推荐:你这代码写得真丑,满屏的try-catch,全局异常处理不会吗?个人原创+1博客:点击前往,查看更多
来源:www.importnew.com/author/tangyouhua
1. Java 堆空间
发生频率:5颗星
造成原因
- 无法在 Java 堆中分配对象- 吞吐量增加- 应用程序无意中保存了对象引用,对象无法被 GC 回收- 应用程序过度使用 finalizer。finalizer 对象不能被 GC 立刻回收。finalizer 由结束队列服务的守护线程调用,有时 finalizer 线程的处理能力无法跟上结束队列的增长
解决方案
- 使用 -Xmx 增加堆大小- 修复应用程序中的内存泄漏
2. GC 开销超过限制
发生频率:5颗星
造成原因
- Java 进程98%的时间在进行垃圾回收,恢复了不到2%的堆空间,最后连续5个(编译时常量)垃圾回收一直如此。
解决方案
- 使用 -Xmx 增加堆大小- 使用 -XX:-UseGCOverheadLimit 取消 GC 开销限制- 修复应用程序中的内存泄漏
3. 请求的数组大小超过虚拟机限制
发生频率:2颗星
造成原因
解决方案
4. Perm gen 空间
发生频率:3颗星
造成原因
Perm gen 空间包含:
- 类的名字、字段、方法- 与类相关的对象数组和类型数组- JIT 编译器优化
当 Perm gen 空间用尽时,将抛出异常。
解决方案
5. Metaspace
发生频率:3颗星
造成原因
解决方案
- 通过命令行设置 -XX: MaxMetaSpaceSize 增加 metaspace 大小- 取消 -XX: maxmetsspacedize- 减小 Java 堆大小,为 MetaSpace 提供更多的可用空间- 为服务器分配更多的内存- 可能是应用程序 bug,修复 bug
6. 无法新建本机线程
发生频率:5颗星
造成原因
解决方案
7. 杀死进程或子进程
发生频率:1颗星
造成原因
解决方案
- 将进程迁移到不同的机器上- 给机器增加更多内存
与其他 OOM 错误不同,这是由操作系统而非 JVM 触发的。
8. 发生 stack_trace_with_native_method
发生频率:1颗星
造成原因
解决方案
使用操作系统本地工具进行诊断
最后,再附上我历时三个月总结的 Java 面试 + Java 后端技术学习指南,这是本人这几年及春招的总结,目前,已经拿到了大厂offer,拿去不谢!下载方式1. 首先扫描下方二维码2. 后台回复「Java面试」即可获取