我有一个多线程应用程序,它启动一个外部应用程序来进行数据转换,为应用程序的后续部分做准备。
我有一个问题,当我将线程数设置为高于 6 个并发线程时,Runtime.getRuntime().exec() 无法启动外部应用程序(我也尝试使用 ProcessBuilder 并获得相同的结果)。它不会抛出任何异常,也不会在标准输出流或标准错误流上捕获任何内容。更奇怪的是,在重新启动服务器后,我可以在几分钟内运行至少 8 个并发线程而不会出现问题,但问题会再次出现。
我读过 Linux 的实现使用了 fork() 命令,这可能导致无法分配内存错误,但我没有收到任何此类错误。
我已经编写了另一个测试应用程序来启动 X 个notespad.exe,而 X 大到 100 没有问题。
该应用程序在 VMware 环境中的 Window 2003 标准 x64 服务器上运行。JVM 版本为 1.6.0_11。
我可以更新 JVM 以尝试解决问题,但我想将其作为最后的努力,以防止需要使用新的 JVM 版本测试所有应用程序。