标签: Java - 文章列表
共 1 页 · 清除标签筛选
-
Java报错Connection is not available, request timed out after 30000ms的排查方法(HikariCP连接池耗尽、连接泄漏定位与maximumPoolSize调整)
HikariCP报Connection is not available, request timed out after 30000ms,多数是连接池被打满。本篇讲清报错括号里total、active、idle、waiting四个数字的读法,用leakDetectionThreshold抓出泄漏堆栈,梳理queryForStream、事务里调外部接口等四种不还连接的写法,以及maximumPoolSize、maxLifetime、keepaliveTime的取值牵制。
-
Java报错RejectedExecutionException与线程池任务堆积的排查方法(ThreadPoolExecutor参数、四种拒绝策略与Spring Boot默认线程池配置)
线上抛RejectedExecutionException时,报错串里的pool size、queued tasks已经把现场说清楚了。记录execute()的四级流转、四种拒绝策略的取舍、Spring Boot默认线程池无界队列带来的隐性问题,以及用jstack与打点定位堆积任务的做法。
-
Android Studio构建报错Unsupported class file major version 65与Minimum supported Gradle version的解决方法(AGP、Gradle与JDK版本对应排查)
升级Android Studio后打开老项目,Sync必报Unsupported class file major version 65与Minimum supported Gradle version。前者是Gradle跑在过高JDK上(61对应Java 17、65对应Java 21),后者是AGP要求的Gradle下限。用gradlew --version看实际生效版本,改distributionUrl与Gradle JDK,处理国内仓库、代理与cacerts证书,再清daemon缓存复查。
-
Java报错java.lang.OutOfMemoryError: Java heap space的排查方法(jmap与jcmd导出堆快照、MAT定位泄漏点与-Xmx调整)
Java heap space只说明堆分配不下了,谁占着堆要看堆快照。用-XX:+HeapDumpOnOutOfMemoryError留现场,jcmd与jstat判断是泄漏还是-Xmx给小了,再用MAT的Dominator Tree追引用链,顺带说清容器里UseContainerSupport与OOMKilled的关系。
-
Docker容器退出码137与OOMKilled的排查方法(docker inspect定位、内存限额调整与JVM容器感知)
容器跑着跑着自己就没了,docker ps -a里显示Exited (137),应用日志毫无异常。137等于128加9,是进程被SIGKILL杀掉的信号。本文讲如何用docker inspect确认OOMKilled、翻dmesg内核记录、读cgroup v2的memory.events拿到真实用量,以及不同退出码139、143的区别。
-
Maven依赖冲突报错NoSuchMethodError与ClassNotFoundException的排查方法(dependency:tree定位与exclusions排除)
本地IDE运行正常、打成jar上线就报NoSuchMethodError或ClassNotFoundException,根因是classpath上同一个类存在两份版本。文章给出getProtectionDomain定位jar来源、dependency:tree与-X查omitted for conflict with仲裁结果、exclusions与dependencyManagement两种解法、enforcer插件构建期拦截,以及fat jar与scope写错的排查。
-
Java进程CPU占用过高的排查方法(top -H与jstack定位到具体代码行)
Java进程CPU打满时先分清us高还是sy高,再用top -Hp找出高CPU线程,把线程id转十六进制后到jstack输出里搜nid定位到具体代码行。文中包含连续三次抓栈对比、容器内jstack失效的两种原因、GC线程占高的判断方法,以及正则回溯、JSON序列化等常见代码原因。