AIX 에서 malloc, free 사용시 프로세스의 메모리 사용을 모니터링하면 free 시 메모리가
커널에 원하는 만큼 반환되지 않는 것을 알 수 있습니다. 이는 커널에서 메모리 사용효율을
극대화 하기 위해 AIX 가 사용하는 내부 아키텍쳐에 기반한 지극히 정상적인 현상입니다.
따라서 메모리 할당/해제 관련 malloc, free 사용시 메모리의 효율적 사용을 고려한 AIX 의
기본처리 방식을 무시하고 함수이름 그대로 메모리를 할당/해제 하고자 한다면 해당
프로그램에서 메모리 free 시 disclaim 함수를 free 에 앞서 추가로 호출하거나 AIX 5.2 의
경우 프로그램 시작 전에 다음의 환경변수를 set 하면 됩니다.
When you free memory it does not go back to the system in case you need to use the
same amount of memory again.
we will use disclaim() instead of free which really returns the memory or associated
paging space to the system.
It is not sufficient to use the free() subroutine to free the space that was allocated with
the malloc() or calloc() subroutines. The free() subroutine releases only the address
range that the structure occupied. To release the real memory and paging space, use
the disclaim() subroutine to disclaim the space as well.The call to disclaim() should
be before the call to free().
저도 주워들은 거라
저도 주워들은 거라 확실친 않지만, 보통 메모리해제를 하면 다시 그부분에 할당할 수 있도록만되고 실제로 메모리가 반환되는건 프로그램이 종료될때라고 들은 적이 있습니다.
자세한건 다른분이 설명해주시기를-_-;;
참고..
퍼온 글입니다. 참고하시길..
AIX 에서 malloc, free 사용시 프로세스의 메모리 사용을 모니터링하면 free 시 메모리가
커널에 원하는 만큼 반환되지 않는 것을 알 수 있습니다. 이는 커널에서 메모리 사용효율을
극대화 하기 위해 AIX 가 사용하는 내부 아키텍쳐에 기반한 지극히 정상적인 현상입니다.
따라서 메모리 할당/해제 관련 malloc, free 사용시 메모리의 효율적 사용을 고려한 AIX 의
기본처리 방식을 무시하고 함수이름 그대로 메모리를 할당/해제 하고자 한다면 해당
프로그램에서 메모리 free 시 disclaim 함수를 free 에 앞서 추가로 호출하거나 AIX 5.2 의
경우 프로그램 시작 전에 다음의 환경변수를 set 하면 됩니다.
MALLOCDISCLAIM=true
------------------------ AIX 에서의 메모리관리 기본방식 ----------------------------
When you free memory it does not go back to the system in case you need to use the
same amount of memory again.
we will use disclaim() instead of free which really returns the memory or associated
paging space to the system.
It is not sufficient to use the free() subroutine to free the space that was allocated with
the malloc() or calloc() subroutines. The free() subroutine releases only the address
range that the structure occupied. To release the real memory and paging space, use
the disclaim() subroutine to disclaim the space as well.The call to disclaim() should
be before the call to free().
아 그렇군요 ㅋ
매우감사^^ㅋㅋ
댓글 달기