Java 反射性能在打包为 jar 时下降

标签 java performance class reflection jar

我真的很头疼。我尝试了一切,到处搜索。它来 self 继承的测试 JAR 的应用程序。

(它由一个 GUI 前端和一个执行实际检查的命令行应用程序组成。GUI 通过在其自身上启动一个新的 JVM [java -cp "itself.jar"com.different. mainClass]。这是一个糟糕的设计,我知道,但可能是相关的。)

无论如何,这个程序包含一些嵌套在两个 for 循环中的反射调用。问题是当应用程序被 JARed 时,第一次反射调用每次迭代只花费一秒钟。但是当它从类中运行时,它需要几毫秒。

实际上,这意味着这个命令:

java -jar myjar.jar

需要几个小时。

这个命令:

java -cp "...[bunch of jars];myjar.jar" com.myclasses.main

需要几分钟。

被测试的 JAR 总是一个 jar。区别仅在于测试应用程序。

非常感谢任何想法或追求的途径。谢谢!

最佳答案

您可以考虑在像 Eclipse 这样的分析器下运行您的程序 TPTPYourKit并更准确地确定您的时间花在了哪里。这很可能会指出代码中的错误,或者不太可能指出库中的错误。然后,如果你还是想不通,把相关代码贴在这里,我们可以帮忙解决。

关于Java 反射性能在打包为 jar 时下降,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14574580/

相关文章:

java - 如何为 ResponseEntity<> 返回 'Integer' 类型并在 api 页面上获取结果?

c++ - 为什么 boost::mutex 比 std::mutex 快于 vs2013?

algorithm - 在查找元素之前对数组进行排序是否值得?

class - 使用来自不同文件的类导出 TypeScript 模块

java - 在 JPanel 中执行 ActionListener

java - 我需要一些有关 Java 撤消功能的帮助

C++矩阵计算效率

c++ - 如何合并两个类A和B以定义C++中抽象类的功能

python - 根据类 python 2.7 中的变量按字母顺序对类列表进行排序

java - 为什么 JAXB 的 xjc 的 XML 文件输入与我的不同?