DevFix
Java
Tech Stack · 分类合集

Java 报错合集

从 JDK 基础异常到 JVM 内存调优,覆盖空指针、集合遍历、线程安全、BigDecimal 精度等高频问题,每条都经过社区验证。

6 案例6 已验证
Java
Java已验证

ConcurrentModificationException 排查:单线程遍历改集合也会中招

ConcurrentModificationException 不是多线程专属,单线程遍历集合时直接增删元素一样触发。根因是 iterator 的 expectedModCount 与集合 modCount 不一致。用 removeIf 或 Iterator.remove 即可解决。

2026-08-23
Java
Java已验证

Java 死锁排查:jstack 报 Found one Java-level deadlock 的定位与解决

应用突然假死,没有异常、没有日志,多半是死锁。用 jstack 抓线程快照,JVM 会直接打出 Found one Java-level deadlock 并列出环上线程。从四个必要条件到锁顺序一致、tryLock 超时一次讲清。

2026-08-23
Java
Java已验证

Java 内存溢出排查:OutOfMemoryError: Java heap space 的定位与解决

堆内存被对象占满,GC 回收不回空间,抛出 OutOfMemoryError: Java heap space。用 -XX:+HeapDumpOnOutOfMemoryError 留堆快照,MAT 看 Dominator Tree 和 GC Roots,揪出泄漏源头。调大 -Xmx 只是缓兵之计。

2026-08-23
Java
Java已验证

Java 栈溢出排查:StackOverflowError 的定位与解决

递归写错或调用链太深,栈帧把 JVM 线程栈顶穿,抛出 StackOverflowError。它不是堆内存不够,是调用栈深度超限。先查递归到底有没有出口,能改循环就改循环,必要时用 -Xss 应急。

2026-08-23
Java
Java已验证

ThreadLocal 内存泄漏排查:线程池复用导致 OutOfMemoryError 的坑

ThreadLocal 在线程池里用完不调用 remove,会慢慢把堆吃满,最终抛出 OutOfMemoryError。根因是 Entry 的 key 是弱引用、value 是强引用,线程复用让无主 value 越积越多。从根因到 try/finally 清理一次讲清。

2026-08-23
Java
Java已验证

OutOfMemoryError: unable to create new native thread 排查与解决

OutOfMemoryError: unable to create new native thread 不是 Java 堆满了,是操作系统拒绝再创建线程。根因是 ulimit -u、kernel.threads-max 等线程上限,或线程栈吃光 native 内存。调高限制、用有界线程池、减小 -Xss 解决。

2026-08-23

还没找到你要的那个报错?

把你踩过的坑整理出来,帮助下一个遇到同样问题的开发者。

贡献一条解法