Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在jar启动时预加载java类/库?_Java_Jvm_Classloader_Warm Up - Fatal编程技术网

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

在jar启动时预加载java类/库?,java,jvm,classloader,warm-up,Java,Jvm,Classloader,Warm Up,在对服务器的第一次RPC调用期间发生超时,但子请求请求成功。服务器在响应时超时,因为在第一次调用时,它会加载处理请求所需的库。由于此延迟,一些客户端超时。虽然可以增加客户端中的超时延迟,但我希望最小化类加载对应用程序响应性的影响 如何预加载Java类文件,以便在应用程序的.jar文件首次运行时,类加载不会在第一次调用时引入延迟?您可能希望尝试的一件事是在Java服务器本身内部编写一个简单的客户机。该客户机在启动时只调用服务器中的某个方法,强制加载类。在这个小客户端获得结果(或回调)后,它会将服务

在对服务器的第一次RPC调用期间发生超时,但子请求请求成功。服务器在响应时超时,因为在第一次调用时,它会加载处理请求所需的库。由于此延迟,一些客户端超时。虽然可以增加客户端中的超时延迟,但我希望最小化类加载对应用程序响应性的影响


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

您可能希望尝试的一件事是在Java服务器本身内部编写一个简单的客户机。该客户机在启动时只调用服务器中的某个方法,强制加载类。在这个小客户端获得结果(或回调)后,它会将服务器置于“外部世界可以访问”状态。

我建议在打开服务器之前假装连接。这将确保(大多数)相关的延迟初始化已经执行。

您可以在服务器启动之前运行负载。您没有指定如何加载服务器、类以及环境是什么,但可以利用这样一个事实,即加载类时将运行类静态初始值设定项。因此,如果您是从“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...
   }
}

这个解决方案有点脆弱。一个更好的解决方案是先做一个虚拟动作,加载所有需要的类。类似于
sendRequest(“/dev/null”)
的东西会很好。但是基本的想法是可以的。你可能想看看现有的一些。