【问题标题】:Signed FatJar is really slow at runtime签名的 FatJar 在运行时真的很慢
【发布时间】:2017-11-19 05:46:08
【问题描述】:

我有一个相当大的已签名 FatJar (~150Mb),我只是尝试运行它,结果发现它的运行速度比未签名的等效文件慢得多。我正在使用 jdk1.8.0_131(在 Mac 上)。

我很好奇这是否正常,或者是否有一些提示和技巧可以用来加快速度。

我注意到签名过程实际上是对 jar 中的每个单独条目进行签名,而不是对整个 Jar 进行签名。所以我认为缓慢是由于类加载器必须验证它尝试加载的每个类的签名。

所以我的问题是,有没有办法改变这种行为?我可以让类加载器以某种方式验证 JAR 是否已正确签名,然后就像未签名的 JAR 一样运行?

如果没有,我将实现自己的签名/验证机制。只是想在我这样做之前确保我没有遗漏任何东西。

【问题讨论】:

  • 您在哪个 Java 版本上运行 jar?
  • 刚刚用该信息更新了问题。 Mac 上的 jdk1.8.0_131。

标签: java jar jarsigner jar-signing


【解决方案1】:

这可能是一个 java 错误。

here

实际上签名验证不应该对整体性能产生重大影响。

所以尝试更新JDK版本。

【讨论】:

  • 谢谢,不幸的是,我的情况并非如此。我们使用的是 JDK 1.8 (jdk1.8.0_131)。我会更新我的问题以记下这一点。
【解决方案2】:

我在调用 REST API 时非常缓慢,请求最多需要 4 秒而不是不到 1 秒。

原因是 创建客户端需要很多时间。 基本上解决方案是让客户端创建一个单例,然后它又很快了。

【讨论】:

  • 请在您的回答中提供更多详细信息。正如目前所写的那样,很难理解您的解决方案。
  • 这个答案与被问的问题无关。
  • 好吧,我分享的经验表明,当使用签名的 jar 创建外部连接时,运行时运行速度会变慢.. 这是一个潜在的原因.. 可能是其他原因.. 以及对此的解决方案在单例中创建 1 个外部连接,然后使用它而不是在运行时或循环中创建多个连接
猜你喜欢
  • 2013-04-12
  • 1970-01-01
  • 1970-01-01
  • 2012-07-16
  • 2017-11-10
  • 2010-12-28
  • 2013-01-25
  • 1970-01-01
  • 2012-01-30
相关资源
最近更新 更多