GraalVM Native Image 进程能否被 jps 检测到?以及我们的生产策略2024年4月19日·666 字·2 分钟了解 GraalVM Native Image 进程何时会在 jps 中显示,并学习我们在生产环境中在 GraalVM Native Image 和 JVM 之间选择的经过实战验证的方法。我们详细介绍了针对 Lambda 风格任务与长期运行的微服务的策略。
解决 JVM Safepoint 延迟:从 EFS 集成到异步日志的探索之旅2022年6月16日·2317 字·5 分钟深入调查升级到 Java 17 并实施 AWS EFS 集中式日志收集后出现的神秘 JVM safepoint 延迟问题。我们发现日志输出期间的文件 I/O 阻塞如何冻结整个 JVM 进程,并通过异步日志和正确的 WebFlux 实现解决了这个问题。
全网最硬核 JDK 分析 - 2. Java 随机数演进2022年6月1日·9740 字·20 分钟全面探索 Java 中的伪随机数生成器,涵盖从基本线性同余算法到 Java 17 中高级 LXM 实现的所有内容。了解算法性能、安全考虑以及如何为你的特定用例选择合适的随机数生成器。
全网最硬核 JDK 分析 - 3. Java 新内存模型解析与实验2022年3月28日·25486 字·51 分钟从规范到实现深入探讨 Java 内存模型(JMM),涵盖内存屏障、CPU 重排序和 Java 9+ VarHandle API。了解一致性、因果性、共识性,以及 volatile、final 和其他同步机制在底层的工作原理,并提供实用的 jcstress 示例。
隐藏的性能杀手:为什么日志中的代码位置会摧毁你的微服务性能2022年3月2日·1855 字·4 分钟了解在日志中启用代码位置如何导致微服务中的严重 CPU 性能问题,特别是响应式应用。这个深入分析揭示了 Log4j2 中堆栈遍历的隐藏成本,并为高吞吐量系统提供了可行的解决方案。
Spring Boot 升级后内存问题排查:深入探讨 ResolvableType 对象创建2022年2月28日·2212 字·5 分钟调查升级到 Spring Boot 2.4.6 + Spring Cloud 2020.0.x 后过度内存分配和 YoungGC 频率增加的问题,揭示 BeanUtils.copyProperties 如何在 Spring 5.3.x 版本中创建大量 ResolvableType 对象而不进行缓存。
一个奇怪的 Bug 追踪:当异常失去声音时2021年8月9日·1924 字·4 分钟深入探讨一个神秘的生产问题,其中异常日志神秘消失,引导我们通过 Arthas 调试、Log4j2 内部机制,以及发现异常的 getMessage() 方法本身由于 Guava-Guice 版本不兼容而抛出异常。
OpenJDK 11 JVM 日志:新统一配置完整指南2020年2月6日·2259 字·5 分钟了解 OpenJDK 11 如何通过其统一配置系统彻底改变 JVM 日志记录。学习用于 GC 分析、类加载和运行时编译的基本日志标签,以及使用 jcmd 进行实时性能调优的动态日志配置。