java heap memory 관련에러

2010.05.11 10:53

조인상 조회 수:20503

원문 : 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 108796
131 SAS RAID controller for AIX [1] file ischo 2017.02.04 17001
130 장비별 OS 설치 가능버전 리스트 조인상 2010.05.11 17020
129 Memory – Paging Space 튜닝관리 조인상 2010.05.11 17202
128 시스템부팅이상시조치사항 조인상 2010.05.11 17211
127 OS덤프용 alt_disk_install 스크립트 조인상 2010.05.11 17228
126 IBM information center URL 조인상 2010.05.11 17269
125 IBM 시스템-영업&기술 유용한 싸이트 모음 조인상 2010.05.11 17315
124 AIX 5.1 ML-4 Overland 네오4000 백업장치 붙히는 방법 조인상 2010.05.11 17342
123 메모리 정보 확인 조인상 2010.05.11 17345
122 AIX5.3 TL04 이상 설치시 workload manager 제거 조인상 2010.05.11 17378
121 Virtual IO Server and Integrated Virtualization Manager Command Reference file 조인상 2010.12.21 17385
120 IBM p670 Service Guide file 조인상 2010.05.11 17460
119 mksysb & savevg &alt_disk_install 조인상 2010.05.11 17489
118 DAT Tape 사양 로드맵 file 조인상 2011.08.08 17589
117 errpt 내용 삭제하는 법 조인상 2010.05.11 17646
116 LV name과 마운트 이름 변경하기 조인상 2010.05.11 17684
115 AIX L1, L2, L3 cache 사이즈 확인하는 방법 조인상 2010.05.11 17720
114 expect 스크립트를 이용한 KLIS 서비스 내리기 file 조인상 2010.05.11 17821
113 BC & x시리즈 전력량 계산기 file 조인상 2010.05.11 17835
112 파일 시스템 용량 증가시 "물리적 구획이 부족합니다."(0516-1034) 라는 메세지가 오류메세지 조인상 2010.05.11 17858
서버에 요청 중입니다. 잠시만 기다려 주십시오...