singhajit.com 上标称 17 分钟读完的 JVM 运行时入门:从 javap 看到的 iload、iadd 讲到 C1、C2 分层编译和 deoptimization,GC 那节覆盖 G1、ZGC 和分代回收的取舍。
Posts for: #JVM
Spring Boot fat jar 下 Class.forName 只在部分线程上找不到类:打包形态和线程来源各管一关
同一句 Class.forName 在 IDE 里跑得好好的,打成 fat jar 就报找不到类:看打包形态给的是哪个 application class loader,也看这条线程的 TCCL 是继承创建者的还是被 ThreadFactory 设过。
Kafka producer 构造失败:fat jar 下 commonPool 抢走了第一次类初始化
同一个 JVM 里只有走 Confluent 序列化器的 topic 发不出去:它的配置类在静态初始化时按 TCCL 解析默认值的类名,而 fat jar 下那个 TCCL 看不见 BOOT-INF/lib;之后这个类不会再重新初始化,实例只能换掉。
K8s 上跑 Java 的 JVM 配置:JDK_JAVA_OPTIONS、MaxRAMPercentage 与 GC 选择
结合一份 2026 年调查和我自己的阅读笔记,整理 K8s 容器化 Java 应用里三个常见 JVM 配置决策:JDK_JAVA_OPTIONS、MaxRAMPercentage,以及 GC 选择。
Java 25 on Kubernetes:默认配置未必适合容器
Java 25 跑在 Kubernetes 上,默认堆只用了 25%,CPU 节流的影响也比预期大,这几组实验数据和值得优先验证的配置项放在一起。