java 预加载_java – 如何在启动时在JVM中预加载Web应用程序类?

在我们的网络应用程序中,由于类加载,一些页面的第一次加载需要一些小但明显的时间.有没有人有任何聪明的方法在启动时在JVM中预加载Web应用程序类?

更新:我们现在所做的是在db表中存储一堆完整的类名(700).我们在启动时读取表并执行Class.forName().它工作正常,但我认为可能有一个更聪明的方法.我们通过使用分析器确定了在启动时引用的700个类.

解决方法:

好吧,它不是很聪明,因为它是规范的一部分,但是你可以通过在web.xml中将load-on-startup元素添加到servlet定义来启动Web App时启动servlet:

....

....

....

....t

1

如果您为一组有代表性的服务执行此操作 – 或者可能只是一个可以预加载所需内容的servlet – 那么您将实现目标.

如果这还不够,如果你想从JAR文件加载类,例如,没有以有意义的方式实际初始化它们,并且如果你知道你的JAR文件在哪里或者可以找出你的JAR文件在哪里,那么你可以使用类似于this JCP forum post “List classes in package”的代码或该线程中的某些后续帖子.从类列表中,您可以获取Class对象,这将有助于加载类而无需实际实例化实例.

标签:java,web-applications,jvm,classloader,performance

来源: https://codeday.me/bug/20190607/1193043.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值