无法运行程序“ping”:CreateProcess error = 8

时间:2014-07-14 01:51:18

标签: java memory ping

在我的java代码中,我在开始时使用new ProcessBuilder("ping", strIP);,它正常运行,但在24小时后,它会崩溃,显示

  

无法运行程序“ping”:CreateProcess error = 8有   Java Runtime Environment的内存不足以继续。   本机内存分配(malloc)无法为其分配32744个字节   ChunkPool:分配

我不知道如何解决它。

3 个答案:

答案 0 :(得分:1)

如果不杀死进程,Ping进程永远不会停止。

ProcessBuilder pb = new ProcessBuilder("ping",  strIP);
Process process = pb.start(); //this will keep running and probably why you get insufficient memory after a long time
... //do whatever you need
process.destroy();  //stop the ping process

答案 1 :(得分:0)

您的代码中存在内存泄漏。在这里发布你的代码。使用JVisualVM监视堆增长,直到遇到此异常。您也可以使用JVisualVM to find your leak

答案 2 :(得分:0)

evanwong是对的。 只是为了添加另一个选项,你可以向ping命令发送一个参数,因此它只发送X个请求。

new ProcessBuilder("ping", "-c", pingRequestsNumber, strIP);

我觉得evanwong的方式会发送一个未知数量的请求,直到你停止它(这可能是一个更好的解决你的问题的方法),但我的方式一直控制着用过的资源。

我可能会使用我的方法。如果需要,我会多次启动ping过程,但我确信我不会用完内存,我不会强调接收ping的服务器,这对我来说会更容易阅读服务器的日志,......