java heap memory 관련에러
2010.05.11 10:53
원문 : 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
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
에러내용
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
댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
공지 | [공지] 게시자료 열람자유. 불펌금지입니다. | 조인상 | 2010.12.07 | 110344 |
» | java heap memory 관련에러 | 조인상 | 2010.05.11 | 20623 |
30 | syslog 떨어 뜨리는 방법 | 조인상 | 2010.05.11 | 19197 |
29 | NFS mount | 조인상 | 2010.05.11 | 28970 |
28 | 설치시 CAPP/EAL4+ 옵션에 대하여 | 조인상 | 2010.05.11 | 13085 |
27 | AIX 5.1 ML-4 Overland 네오4000 백업장치 붙히는 방법 | 조인상 | 2010.05.11 | 17473 |
26 | Tomcat 설치하기 | 조인상 | 2010.05.11 | 16925 |
25 | C/C++ 5.0, 6.0 설치하기 | 조인상 | 2010.05.11 | 24769 |
24 | MP 설치하기 | 조인상 | 2010.05.11 | 21965 |
23 | [정욱이네] IBM AIX java 설치 하기. | 조인상 | 2010.05.11 | 32663 |
22 | IBM 시스템-영업&기술 유용한 싸이트 모음 | 조인상 | 2010.05.11 | 17424 |
21 | AIX에서 TCP wrapper 사용하기 | 조인상 | 2010.05.11 | 44493 |
20 | 시간 동기화시키기 | 조인상 | 2010.05.11 | 14119 |
19 | NFS를 이용한 백업스크립트 | 조인상 | 2010.05.11 | 14873 |
18 | dump device 설정 | 조인상 | 2010.05.11 | 15113 |
17 | errpt 내용 삭제하는 법 | 조인상 | 2010.05.11 | 17778 |
16 | NFS 마운트 안될때 | 조인상 | 2010.05.11 | 16157 |
15 | [AIX] NFS service | 조인상 | 2010.05.11 | 20609 |
14 | Backup OS Disk만들기(alter disk 백업 방법) | 조인상 | 2010.05.11 | 28612 |
13 | AIX 시스템 명령(cpu, memory, disk) | 조인상 | 2010.05.11 | 22368 |
12 | 로그인 다수 실패해서 로그인이 안될때 | 조인상 | 2010.05.11 | 13857 |