从 JDK 21 切到 25,同样的服务堆占用降了 19% 我们一个文档问答服务在 JDK 21 上跑了快两年,堆峰值 4.8 GB,一直想降但找不到好办法——该做的代码优化都做了,GC 参数也调过了。 四月份我们把它切到了 JDK 25,只加了一个参数,堆峰值降到 3.9 GB。这个改动是 JEP
我们的一个内部工具服务,部署在 Serverless 上,每次冷启动要 8 秒。函数计费按运行时长,8 秒里一半在"加载类、初始化 Spring 上下文",用户已经走了。老板问能不能压到 2 秒内,于是有了这次冷启动专项优化。 先量化,再动手 不量就优化是瞎猜。我用 -Xlog:class+load
review 时和同事吵了一架 1 月中旬做 code review,我写了一段统计订单金额的代码: long total = orders.stream() .mapToLong(Order::getAmount) .sum(); 同事评论:"Stream 有性能
1.2 亿条订单导入 ES,按当时的速度要跑 66 小时 二月初接了个活:把 MySQL 里 2017 年之后的历史订单同步到 Elasticsearch,给客服系统做多条件检索。总共 1.24 亿条。 我先用原来的同步代码跑了半小时,用 _cat/indices 数了一下文档数增长:单机 470
一个订单对象序列化 100 万次,花了 4.2 秒 十月份做对账文件的导出,要把 100 万条订单转成 JSON 写到文件里。我用 Fastjson 1.2.49,代码就一行: String json = JSON.toJSONString(order); 跑完计时:4.2 秒。我当时觉得挺快了,
导出功能上线,CPU 直接干到 780% 新做的对账单导出上线第一天,监控图上 CPU 从 15% 一条直线拉到 780%(8 核机器)。同一个时间点 Full GC 频率从每小时 2 次变成每分钟 30 多次。导出的文件也就 4MB 大小,不至于。 我用 jstack 抓了几把线程,大量线程停在这