gpt4 book ai didi

java - 如何预热java类以避免首次调用缓慢?

转载 作者:行者123 更新时间:2023-12-01 08:39:17 25 4
gpt4 key购买 nike

我正在做一个项目,我需要所有 API 调用的时间少于 1 秒,但我面临的问题是,对每个路由的第一次调用比以下路由慢。

目前,对/login 的第一次调用需要 3.6 秒,接下来的调用需要 170 毫秒,所有其他路由都相同。

我发现使用 -XX:+TraceClassLoading在第一次调用时,这些类被加载到内存中,这导致了性能问题。

但是我没有找到在启动时加载所有类的简单方法,对于每个新服务,我需要在 ApplicationRunner 中添加一个预热调用。

有没有人有自动加载 SpringBoot 应用程序的类或预热其所有路由的解决方案?

最佳答案

Java 的类加载是惰性的。这意味着类仅在需要时由 JVM 加载。

如果你想强制它急切地加载类,你只需要引用它们。一种方法是遍历 jar 内容或类文件以获取类名,然后使用它们调用 Class.forName(className)。 .

此外,如果启动时间和性能对您的用例非常重要,您可能需要提前查看编译解决方案,例如 GraalVM ,或降低 JIT 的编译阈值 ( -XX:CompileThreshold )。

关于java - 如何预热java类以避免首次调用缓慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60066410/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com