【问题标题】:Why does JUnit take so long to launch from Eclipse?为什么从 Eclipse 启动 JUnit 需要这么长时间?
【发布时间】:2017-05-22 16:21:19
【问题描述】:

当我在 Eclipse 中运行 JUnit 测试用例时,启动 JUnit 本身需要 20 秒。

在“进度”视图中,大部分时间为 87%,说明: 正在启动:正在启动虚拟机...

我尝试在 eclipse.ini 和单元测试的运行配置中增加对 vm 的内存分配(VM 参数:-Xms512m -Xmx1024m),但两者都没有区别。

当我启动单元测试时,我正在查看 Windows 任务管理器,我看到一个新的 java 进程被创建,只有 140K 内存,它在 JUnit 最终启动时跃升至大约 20,000K。

所以如果我能看到新的 java 进程以我配置的内存量开始,我至少可以排除 JVM 内存是启动缓慢的原因。但我有点卡住了。我在某处看到了使用它的建议,但它也不起作用:-Djava.net.preferIPv4Stack=true

这是我的 eclipse.ini

-startup
plugins/org.eclipse.equinox.launcher_1.3.0.v20140415-2008.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.200.v20150204-1316
-product
org.eclipse.epp.package.php.product
--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
256M
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-vm
C:/Program Files/Java/jdk1.7.0_79/bin/javaw.exe
-vmargs
-Dosgi.requiredJavaVersion=1.7
-Xms512m
-Xmx1024m
-Djava.net.preferIPv4Stack=true

【问题讨论】:

  • 你的项目已经建成了吗?您在使用快速磁盘吗?
  • AFAIK 这些都不是问题。我正在运行 SSD,并且项目已构建。我正在接受消息“正在启动虚拟机......”,这就是我首先检查内存的原因。但我愿意接受此处任何 Eclipse 向导提供的故障排除建议。
  • 机器总共有多少可用内存?

标签: java eclipse unit-testing junit


【解决方案1】:

我知道这是一个迟到的答案。但这可以帮助其他人。

通常这是因为项目受到非增量项目性质之一的影响,例如 maven(特别是具有非增量 maven 编译阶段插件)和/或 WTP 自动发布等。在控制台视图中,您可以显示maven 控制台,这可能会揭示它在做什么。在构建期间与远程 subclipse/subversion 或 git 相关的任何事情肯定也会花费一些时间。

如果您已经自动构建,则不需要在 junit 启动时构建。 在 junit 启动时关闭所有构建,但当然要确保构建 prj(如果不是自动构建,则通过“构建项目”或“构建全部”)。

另外,如果你有一个项目有大量的依赖 jars 并且你正在使用占位符 jar 来缩短命令行,那么可能是这个 tmp jar 的产生会减慢你的速度,但我怀疑它需要 20 秒。

如果您可以在本地绕过类字节码验证,您可能想在 jvmargs 中尝试“-noverify”。

【讨论】:

  • 打开 maven 控制台是很有帮助的建议。我打开了许多相互依赖的依赖项,它一遍又一遍地解决本地依赖项。一旦我关闭所有这些项目并只使用编译后的 jar,它从 30 秒变为 2 秒。
猜你喜欢
  • 1970-01-01
  • 2012-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-31
  • 1970-01-01
相关资源
最近更新 更多