java heap memory 관련에러

2010.05.11 10:53

조인상 조회 수:20504

원문 : http://www.ischo.net -- 조인상 // 시스템 엔지니어

Writer : http://www.ischo.net -- ischo // System Engineer in Replubic Of Korea

+++++++++++++++++++++++++++++++++++++++++++++++++++++++

 

본문 : http://www.ischo.net -- 조인상 //시스템 엔지니어

+++++++++++++++++++++++++++++++++++++++++++++++++++++++


에러내용

Unable to alloc heap of requested size, perhaps the maxdata value is too small -
see README.HTML for more information.
Unable to allocate an initial java heap of 268435456 bytes.
**Out of memory, aborting**

*** panic: JVMST016: Cannot allocate memory for initial java heap

에러후 대처

어플리 케이션에서 필요한 초기 java heap 크기는 256MB MX 256MB 입니다.
>위의 에러가 생겼을때 일단 lsattr -El mem0  와 errpt 에러 메세지를 봤을때 메모리 에러는 없었구요
>시스템을 리부팅을 두세번 해도 증상은 같았습니다.
>setenv IBM_JAVA_MMAP_JAVA_HEAP
>setenv LDR_CNTRL MAXDATA
>결국 옵션으로 해결이 되었습니다. 그리고 나중에는 위이 옵션 설정 없이도 잘 실행이 되었습니다.
>
>이상한것이 시스템 기본으로 설정이 되어 있는것은 1GB까지는 java heap 싸이즈를 할당해 해줄수 있는 것으로
>세팅이 되어 있었고 이제까지 문제 없이 잘 작동을 하였는데
>오라클 공유 sherd 값을 변경 200MB에서 300MB로 늘리고 시스템을 재부팅한 이유로 위의 에러 메세지가 떴습니다.
>그래서 다시 오라클 세팅값을 변경을 해주고 다시 시스템을 리부팅을 해도 같은  메세지가 떴습니다.
>
>위와 같은 현상이 일어날수 있는 가능성은 무엇일까요?
>물리적 메모리 문제 . 환경세팅값 문제.. 아님 정보가 꼬여서 그렇게 되었을까요.
>
>그런데 이상한것은 위의 환경세팅값으로 프로그램을 실행후 메모리 슬롯을 한번 뺐다가 끼운후
>시스템을 리부팅하고 나서는 환경 세팅값 없이도 잘 되었던것 같아요....


이에관련된 문서들

1. "java Heap 크기에 대하여" 라는 제목으로 올려져 있는 내용입니다.

32-bit java 의 메모리 limit 은 기본적으로 다음과 같습니다.

java Version    -Xms(Default, Supported max)    -Xmx(Default, Supported max)      o_maxdata (dump -ov)
-------------------------------------------------------------------------------------------------------
    1.1.8                        1 MB, 2 GB - 1                          32 MB, 2 GB - 1                          0x00000000
    1.2.2                        1 MB, 1280 MB                          64 MB, 1280 MB                          0x50000000
    1.3.0                        1 MB, 1 GB                              64 MB, 1 GB                              0x80000000
    1.3.1                        1 MB, 1 GB                              64 MB, 1 GB                              0x80000000

Java 관련 heap 에는 Java heap 과 Native(or system) heap 이 있습니다. Java heap 은 java objects instance 가
사용하는 메모리이고 native heap 은 java 내 thread, JNI 등이 사용합니다.

Java 1.2.2 의 경우는 java heap 이 shared memory segments 에 mmap() 으로 할당되고 native heap 은 process
private segments 에 malloc() 을 통해 할당됩니다.

java 1.3.X 에서도 native heap 은 process private segments 에 malloc() 을 통해 할당됩니다.
Java 1.3.X 경우 java heap 크기 1 GB 미만은 process private segments 에서 malloc() 을 통해서 메모리를
구하고 1 GB 이상은 shared memory segments 에서 mmap()을 통해 메모리를 확보합니다.
Java heap 크기 1 GB 미만의 경우 MAXDATA 범위내에서 java heap 과 native heap 을 나누어 가지게 됩니다.

32-bit process memory 체계에서 활용할 수 있는 shared memory segments 개수는 총 10 개이며 이 것의 메모리 크기는 2.5 GB 입니다.

따라서 java heap 크기를 1 GB 이상으로 하려면 export LDR_CNTRL=MAXDATA=0xn0000000 에서 n 값을 7 이하로 줄여 가야합니다.
      n = 8  : Max java heap size =  1  GB
      n = 4  : Max java heap size = 1.5  GB
      n = 2  : Max java heap size = 2.0  GB
      n = 0  : Max java heap size = 2.5  GB

Java 관련 OutOfMemory 에러의 경우 java heap 이나 native heap 중 어데서 발생하는지가 먼저 밝혀져야 합니다.
Native heap 에서 발생하는 것이라면 단순하게는 MAXDATA 를 크게하면 되지만 1 GB 이상의 Java Heap 을 사용하는 경우라면 java Heap 크기가 반대로 줄어들 수 있으니 주의해야 합니다.

만약 이 이상의 Java Heap memory가 필요하다면 64-bit java 를 사용해야 합니다.


2. 아래 문서 참조
http://www-128.ibm.com/developerworks/eserver/articles/aix4java/

http://www-128.ibm.com/developerworks/eserver/library/es-javaonaix_memory.html
AIX 자바관련 사이트

http://www.redbooks.ibm.com/abstracts/tips0154.html?Open
번호 제목 글쓴이 날짜 조회 수
공지 [공지] 게시자료 열람자유. 불펌금지입니다. 조인상 2010.12.07 108843
191 xSeries 제원 2012_03 ~ 2012-06 [1] 조인상 2012.06.18 25123
190 AIX useful commands [4] file 조인상 2012.04.26 26880
189 POWER7 Strategy and Technology 조인상 2012.04.26 12861
188 AIX Tuning for IBM HTTP Server and WebSphere Application Server file 조인상 2012.04.26 15784
187 IBM Power System - Cod(Capacity On Demand) file 조인상 2012.04.26 12876
186 IBM System x BP Guidebook v20e secret 조인상 2012.04.26 0
185 DIY for AIX HACMP secret 조인상 2012.03.16 0
184 PowerHA SystemMirror 7.1 Update 조인상 2012.02.25 15090
183 IBM Integrated Virtualization Manager White Book (IVM 백서) file 조인상 2012.01.03 20123
182 AIX Essentials - Asynchronous I/O 조인상 2011.12.02 13591
181 AIX 6.1 최적화와 성능 튜닝 (한글) 조인상 2011.12.01 16947
180 AIX 튜닝 포인트 secret 조인상 2011.12.01 0
179 GPFS ver.3 Manual [1] 조인상 2011.12.01 20498
178 AIX 환경에서 usb드라이브 사용하기 조인상 2011.09.01 41116
177 DAT Tape 사양 로드맵 file 조인상 2011.08.08 17589
176 AIX 에서 Hot-Plug 방식으로 카드 추가하기 file 조인상 2011.08.01 19430
175 각종 많이 쓰이는 어플리케이션 서비스 관련 포트번호 조인상 2011.07.21 24259
174 AIX에서의 mirrorvg. 디스크 미러링 조인상 2011.07.06 44474
173 미러된 rootvg를 alt_disk_install 로 복제하기 [1] 조인상 2011.06.29 24310
172 IBM p시리즈 2010년 라인업 file 조인상 2011.06.23 16709
서버에 요청 중입니다. 잠시만 기다려 주십시오...