【发布时间】:2013-01-29 02:12:53
【问题描述】:
我真的很头疼。我尝试了一切,到处搜索。它来自我继承的那个测试 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。区别仅在于测试应用程序。
非常感谢任何想法或追求的途径。谢谢!
【问题讨论】:
-
那么
myjar.jar是测试应用程序吗?而且只有在它自己运行时才会出现性能问题,还是在所有 jar 上运行? -
是的,myjar.jar 是测试应用程序。要测试的 JAR 是包含在类路径中的不同 JAR。
标签: java performance class reflection jar