Solaris 응용 프로그램에서는 malloc (), brk() 또는 mmap()와 같은 함수를 사용하여 메모리를 할당합니다. 어떤 응용 프로그램에서 할당 가능한 최대 메모리 양은 사용자의 가상 주소 공간 크기로 제한됩니다. 사용자의 가상 주소 공간에 포함된 프로그램 텍스트, 스택, 데이터 및 라이브러리 때문에 최대 메모리 할당 크기가 더 줄어들 수 있습니다.
32비트 컴퓨팅 환경에서 32비트 가상 주소 공간은 사용자와 커널이 공유합니다. 따라서 사용자 가상 주소 공간 크기는 4GB에서 커널 가상 주소 공간의 크기를 뺀 것입니다. 커널 가상 주소 공간 크기는 물리적 메모리 크기에 따라 구성됩니다. 물리적 메모리 크기가 증가하면 사용자 주소 공간 크기가 줄어듭니다. 시스템의 메모리가 8GB인 경우 사용자 주소 공간의 크기는 약 3GB입니다.
메모리 할당 제한이 응용 프로그램에 대해 충분하지 않은 경우 두 가지 옵션이 있습니다.
커널 가상 주소 공간의 기본 크기를 줄여 사용자 가상 주소 공간 크기를 늘립니다. eeprom 명령을 사용하여 kernelbase 변수의 값을 더 높게 설정할 수 있습니다. kernelbase 변경 시 주의하십시오. 커널 가상 주소 공간이 감소하면 시스템 행이 발생하거나 시스템이 효율적으로 실행되지 않을 수 있습니다.
더 나은 방법은 Solaris x86 64비트 컴퓨팅 환경에서 응용 프로그램을 실행하는 것입니다.
64비트 컴퓨팅 환경에서 32비트 응용 프로그램의 가상 주소 공간은 완전히 사용자에게 할당된 공간입니다. 따라서 32비트 응용 프로그램은 전체 4GB에서 텍스트, 스택 및 라이브러리에 필요한 사용자 주소 공간을 뺀 부분을 할당할 수 있습니다.
일부 초기 64비트 AMD 프로세서에서는 메모리 할당 제한이 1GB 더 감소할 수 있습니다. 사용 중인 프로세서가 여기에 해당되는지 확인하려면 다음 단계를 수행합니다.
32비트 쉘에서 pmap $$ 명령을 실행합니다.
프로세스 맵에 0xC0000000보다 크거나 같은 주소가 나열되는지 확인합니다. 이런 주소가 없으면 Solaris OS는 32비트 응용 프로그램을 4GB 가상 주소 범위 중 가장 낮은 3GB로 제한한 것입니다.
64비트 응용 프로그램의 경우 응용 프로그램에서 이미 사용 중인 메모리 양에 따라 250TB의 메모리를 할당할 수 있습니다.