Runtime.exec()在solaris下执行命令的时候抛出IOException,如何解决?
问题描述:我创建了两个TimerTask每隔30分钟会监控一次系统的硬盘,cpu等信息,主要是利用Runtime.exec("df -k")等命令来查看系统信息。但是发现这个程序跑了几天之后就出现了以下异常:
-java.io.IOException: Not enough space
at java.lang.UNIXProcess.forkAndExec(Native Method)
at java.lang.UNIXProcess.<init>(UNIXProcess.java:53)
at java.lang.ProcessImpl.start(ProcessImpl.java:65)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:451)
at java.lang.Runtime.exec(Runtime.java:591)
at java.lang.Runtime.exec(Runtime.java:429)
at java.lang.Runtime.exec(Runtime.java:326)
...
我每次执行完命令之后会把这个process kill掉,照道理应该能够释放其资源的啊。系统的swap情况如下:
swap 333544 2728 330816 1% /tmp
swap 330872 56 330816 1% /var/run