1586, 2/80 회원가입  로그인  
   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 : 23095     Date : 2006/12/05 07:16



    
rootguy 요즘에 웹서버는 성능이 좋지만 톰캣을 사용할경우 튜닝을 하지 않으면 서버메모리는 남아도는데 메모리 부족현상이.... 2006/12/05  
1566   sdsdfdfgfh[4]     witched14
11/06 38457
1565   텔넷이안되 이상하게뜸[2]     dygks3157
09/02 38358
1564   리눅스 명령어 마스터 1[77]     소유
09/02 35019
1563     [re] 텔넷이안되 이상하게뜸[1]     enrjfenrjf
05/10 34640
1562   초보자를 위한 C++ 강좌 - 씹어먹는 C++ !![2]     kevin0960
03/06 32624
1561   리눅스의 거의 모든 명령어?[314]     소유
10/05 32609
1560   각 라우터 디폴트 비번     ROK.AF
02/09 31355
1559   패스워드 알아내기 2[17]     geniusevil
12/18 26984
1558   batch파일 만들기 - 1. 초보 연습[2]     qkreoghks00
11/18 26841
1557   [War Game] webhacking.kr 가입을해보자.[12]     푸른하늘
03/06 26210
1556   왜 C 이어야 하는가 ?[96]     소유
04/09 25515
1555   웹 게시판들의 웹실행파일 업로드 취약점(파일명 필터링 우회)[19]     dual5651
03/28 25223
1554   find 명령어중 -perm 옵션에서 -,+의 차이[1]     파란바다
08/04 24910
1553   해킹 관련 사이트 목록입니다.[12]     wlwjsan
11/09 24700
1552   [펌]리눅스에서 Apache2, Tomcat5, JSP, Oracle9i 연동하기[1]     shin3199
05/30 23666
  자바가상머신 JVM 메모리 조정하기[1]     rootguy
12/05 23094
1550   [자작] 무선랜 WEP 보안을 뚫어보자.<1>[6]     kjwon15
03/04 22979
1549   ftz 서버 구축해보기[15]     파란바다
09/10 22640
1548   [자작] 자동해킹 USB에 대해서[4]     namjmnam
11/21 22431
1547   리눅스 명령어 마스터 2[26]     소유
09/03 21654
[1] 2 [3][4][5][6][7][8][9][10]..[80]

Copyright 1999-2024 Zeroboard / skin by Hackerschool.org / Secure Patch by Hackerschool.org