我有一个Java应用程序调用:
Process pr = Runtime.getRuntime().exec(...)
和这个“exec方法”执行一些其他java应用程序(jar文件)。
执行的应用程序有一些输出,我使用pr.getInputStream()
捕获。我尝试使用BufferedReader
调用readLine()
以及Reader
调用read()
。
当我在Windows7上启动此应用程序时,没有任何问题。但是,如果我在Windows XP Pro(SP3)上尝试它,执行的应用程序的输出非常慢。它以正常速度运行两秒钟,然后冻结15秒钟,然后以正常速度再次继续,然后再次冻结,依此类推......
如果我自己在Windows XP上从命令行运行已执行的应用程序,它会在没有冻结的情况下运行。
我一直在关注任务管理器,已执行的应用程序一直使用25%的处理器性能(应该如此)。执行的应用程序不使用文件系统或swing或类似的东西(它只是启动一些线程并对自己的对象进行一些字段修改)。
我正在使用jdk7和jre7u3。
任何想法这个奇怪的冻结问题是什么?
编辑 - 我不确定它是否相关,但我在执行“已执行”应用时使用的是JVM代理。这个代理有一些内存管理错误。在解决了这些错误后,它工作正常。