外部进程从Runtime.getRuntime()运行到哪里.exec(command)从中获取内存?

时间:2011-09-08 03:37:20

标签: java linux jboss cvs

我有一个在JBoss AS 7下运行的Java应用程序,用于使用Runtime.getRuntime().exec(command)调用相当复杂的bash脚本。 bash脚本失败,因为cvs报告内存不足(错误是“E342:Out of memory!”)。

那么我应该增加JBoss AS可用的内存量(使用JAVA_OPTS =“ - Xms256m -Xmx2048m”或类似内容),还是这表明操作系统本身内存不足?

2 个答案:

答案 0 :(得分:3)

操作系统内存不足。增加JBoss的堆大小只会让事情变得更糟。

你应该看看像这样的事情:

  • 添加更多内存。
  • 增加交换磁盘空间量。
  • 减少正在运行的其他应用程序。

答案 1 :(得分:0)

事实证明这是vim。我正在运行在empty命令下调用cvs的脚本,这可能导致了问题。最后,我刚刚创建了一个脚本来编辑带有通用消息的消息文件:

#!/bin/sh
# Add a generic message
echo "Some Generic Message" > $1
# Update the time stamp. If you don't, you'll get a
# "Log message unchanged or not specified" error.
# the cvs timestamp comparison routine has a resolution
# of one second, so sleep to ensure that the timestamps
# are detected as being different.
sleep 1
touch $1
exit 0

然后将EDITOR或CVSEDITOR环境变量设置为指向脚本。