2011-09-08 1 views
3

Runtime.getRuntime().exec(command)을 사용하여 상당히 복잡한 bash 스크립트를 호출하는 데 사용되는 JBoss AS 7에서 실행되는 Java 응용 프로그램이 있습니다. cvs가 메모리가 부족하다고보고했기 때문에 bash 스크립트가 실패했습니다 (오류는 "E342 : 메모리 부족!"입니다).Runtime.getRuntime(). exec (command)에서 실행되는 외부 프로세스는 어디에서 메모리를 가져 옵니까?

그래서 JAVA_OPTS = "- Xms256m -Xmx2048m"또는 이와 유사한 것으로 JBoss AS에서 사용할 수있는 메모리를 늘려야합니까? 아니면 OS 자체의 메모리가 부족하다는 의미입니까?

+0

그건 cvs가 아니야, 그게 정력이야. –

+0

그래, 일부 인터넷 검색 후 정력 충돌이 나타납니다. 또한 메모리가 부족한 OS의 경우도 아닙니다. 나는 RAM을 2GB 올렸으며 오류가 표시 될 때 시스템 통계를 보았고 돌아갈 충분한 메모리가 있습니다. – Phyxx

답변

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 환경 변수를 설정하십시오.

+0

'cvs commit'을하고 계십니까? 그렇다면'cvs commit -m '메시지를 보낼 수 있습니다. " – msandiford

+0

cvs 명령은 실제로 수정할 수없는 다른 프로그램에서 실행 중이므로 해결 방법이 필요합니다. – Phyxx

3

운영 체제의 메모리가 부족합니다. JBoss의 힙 크기를 늘리면 상황이 악화 될 수 있습니다. 더 많은 RAM을 추가

  • :

    당신은 같은 것들을보고해야한다.

  • 스왑 디스크 공간의 양을 늘립니다.
  • 실행중인 다른 응용 프로그램의 절삭.
+0

시스템에 메모리를 추가해도 아무런 차이가 없습니다. 오류가 표시되면 시스템에 최소 1GB의 여유 메모리가 필요합니다. 어쨌든 vim 문제처럼 보입니다. – Phyxx

관련 문제