1580, 2/79 회원가입  로그인  
   rootguy
   http://f-world.co.kr
   자바가상머신 JVM 메모리 조정하기

http://www.hackerschool.org/HS_Boards/zboard.php?id=Free_Lectures&no=580 [복사]


outofmemory는 생성되는 객체를 위해 더 이상 할당해줄 메모리 공간이 없다는 의미인데...
java에서 memory를 할당해주는 놈은 tomcat을 실행시킨 jvm이죠.

그러면 jvm에 보다 많은 메모리를 제공하면 문제가 해결된다고 생각했었습니다.

jvm의 메모리 관리에 개발자가 영향을 미칠 수 있는 가장 쉬운 방법은 java가 실행될 때 Xms Xmx등의 메모리 관련 옵션을 사용하는 것입니다.

<다음은 sun jvm의 경우입니다.>
아마.. 아무런 옵션을 주지 않으면 디폴트로 가용한 메모리 크기가 128M인가로 설정이 되는데요..
그래서 예를 들면 tomcat의 catalina.sh에 다음과 같은 값으로 option을 조정하였습니다.
JAVA_OPTS="-Xms512m -Xmx512m -XX:PermSize=64m -XX:MaxPermSize=64m -XX:NewSize=400m -XX:MaxNewSize=400m -XX:SurvivorRatio=4 -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC"

Xms, Xmx, permsize, newsize survivorRatio등의 옵션을 적절히 사용하면 아마 outofmemory 문제를 해결할 수 있을 것입니다. 위의 숫자설정에 대한 가이드는 javaservice.net이나 웹에서 outofmemeory로 검색해보시면 좋은 아티클이 많습니다.

그리고 위의 예제 코드가 무사히 실행을 마치고 실행스택에서 빠진 후에 GC가 발생하면 메모리가 줄어들 것 같네요.



◈ 톰캣 힙 메모리 조정하기 (윈도우용)
1. ( 톰캣 실행 파일 catalina.bat 수정 ) catalina.bat 파일 내에 해당 내용을 입력한다.
set JAVA_OPTS=-server -Xms128m -Xmx128m

시작 > 실행 > cmd (도스창들어간후) > catalina.bat stop 실행
시작 > 실행 > cmd (도스창들어간후) > catalina.bat start 실행
2. 서비스 시작 / 종료 파일생성
tomcat_start.bat ( 서비스 시작 )
C:
cd C:\Program Files\Apache Group\Tomcat 4.1\bin\
catalina.bat start
tomcat_stop.bat ( 서비스 종료 )
C:
cd C:\Program Files\Apache Group\Tomcat 4.1\bin\
catalina.bat stop
◈ 톰캣 힙메모리 조정하기 (리눅스용)

vi ./startup.sh   ( 톰캣 실행 파일 startup.sh 수정 )

#!/bin/sh
# -----------------------------------------------------------------------------
# Start Script for the CATALINA Server
#
# $Id: startup.sh,v 1.2 2002/01/15 02:55:38 patrickl Exp $
# -----------------------------------------------------------------------------

# resolve links - $0 may be a softlink
PRG="$0"

while [ -h "$PRG" ] ; do
  ls=`ls -ld "$PRG"`
  link=`expr "$ls" : '.*-> \(.*\)$'`
  if expr "$link" : '.*/.*' > /dev/null; then
    PRG="$link"
  else
    PRG=`dirname "$PRG"`/"$link"
  fi
done

PRGDIR=`dirname "$PRG"`
##############512m로 강제 셋팅 : START
export CATALINA_OPTS="-Djava.awt.headless=true -Xms512m -Xmx512m"
##############512m로 강제 셋팅 : END
EXECUTABLE=catalina.sh

########  ms, mx 값은 CPU의 갯수와 MEM크기에 따라 적절히 조정합니다. (EX:-Xms512m -Xmx512m )

# Check that target executable exists
if [ ! -x "$PRGDIR"/"$EXECUTABLE" ]; then
  echo "Cannot find $PRGDIR/$EXECUTABLE"
  echo "This file is needed to run this program"
  exit 1
fi

exec "$PRGDIR"/"$EXECUTABLE" start "$@"

  Hit : 22461     Date : 2006/12/05 07:16



    
rootguy 요즘에 웹서버는 성능이 좋지만 톰캣을 사용할경우 튜닝을 하지 않으면 서버메모리는 남아도는데 메모리 부족현상이.... 2006/12/05  
1560   sdsdfdfgfh[4]     witched14
11/06 35301
1559   텔넷이안되 이상하게뜸[2]     dygks3157
09/02 35138
1558   리눅스 명령어 마스터 1[78]     소유
09/02 34367
1557   초보자를 위한 C++ 강좌 - 씹어먹는 C++ !![2]     kevin0960
03/06 32027
1556     [re] 텔넷이안되 이상하게뜸[1]     enrjfenrjf
05/10 31428
1555   리눅스의 거의 모든 명령어?[314]     소유
10/05 30968
1554   각 라우터 디폴트 비번     ROK.AF
02/09 28857
1553   패스워드 알아내기 2[17]     geniusevil
12/18 26193
1552   batch파일 만들기 - 1. 초보 연습[2]     qkreoghks00
11/18 25922
1551   [War Game] webhacking.kr 가입을해보자.[12]     푸른하늘
03/06 25620
1550   웹 게시판들의 웹실행파일 업로드 취약점(파일명 필터링 우회)[19]     dual5651
03/28 24552
1549   find 명령어중 -perm 옵션에서 -,+의 차이[1]     파란바다
08/04 24009
1548   해킹 관련 사이트 목록입니다.[12]     wlwjsan
11/09 23673
1547   왜 C 이어야 하는가 ?[96]     소유
04/09 23417
1546   [펌]리눅스에서 Apache2, Tomcat5, JSP, Oracle9i 연동하기[1]     shin3199
05/30 22772
  자바가상머신 JVM 메모리 조정하기[1]     rootguy
12/05 22460
1544   [자작] 무선랜 WEP 보안을 뚫어보자.<1>[6]     kjwon15
03/04 22304
1543   ftz 서버 구축해보기[15]     파란바다
09/10 21796
1542   [자작] 자동해킹 USB에 대해서[4]     namjmnam
11/21 21370
1541   리눅스 명령어 마스터 2[27]     소유
09/03 21022
[1] 2 [3][4][5][6][7][8][9][10]..[79]

Copyright 1999-2023 Zeroboard / skin by Hackerschool.org / Secure Patch by Hackerschool.org & Wowhacker.com