java - 在 jar 启动时预加载 java 类/库?

标签 java jvm classloader warm-up

第一次 RPC 调用服务器期间发生超时,但后续请求成功。服务器响应超时,因为第一次调用时它会加载处理请求所需的库。由于这种延迟,一些客户端会超时。尽管可以增加客户端的超时延迟,但我希望最大限度地减少类加载对应用程序响应能力的影响。

如何预加载 Java 类文件,以便在首次运行应用程序的 .jar 文件时,类加载不会在首次调用时引入延迟?

最佳答案

您可以在服务器上线之前运行负载。您尚未指定如何加载服务器、类以及环境是什么,但您可以利用类加载时将运行类静态初始值设定项这一事实。因此,如果您从“main”方法运行,您的类可能看起来像这样

public class Foo {

   static {
     //this will be run when the class is loaded
     try { Class.forName("fully.qualified.class.name.that.i.want.to.Load"); }
     catch ...
   }

   public static void main (string args[])
   {
    //run my server...
   }
}

关于java - 在 jar 启动时预加载 java 类/库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59310079/

相关文章:

Java 异常(java.util.InputMismatchException)

java - 如何在 M1 Macbook 上编译 OpenJDK 11?

java - 在 Java 服务器中发送 edittext 时出错。查看代码

java - 如果重复相同的代码,为什么 Java 会更快?

java - JVM如何设置PATH环境变量

java - 如何在程序之外加载类?

java - 在应用程序 javaee5 中加载共享类

java - 如何构造一个以Arraylist为参数的对象?

java - 为什么 -XX :+UseCompressedOops not defaulted, 并不总是被使用?

Java - java.lang.NoClassDefFoundError 何时发生?