랩뷰에서 "Memory is Full"이라는 메세지가 뜨는 이유는?



주요한 소프트웨어:
주요한 소프트웨어 버전: 8.0
문제가 해결된 소프트웨어 버전: N/A
부차적인 소프트웨어: N/A

문제점:
저는 각 차원당 400개의 8-bit 정수 원소를 가지고 있는 3차원 배열을 6개 만들었습니다. 그런데 랩뷰에서 메모리가 부족하다는 에러가 납니다. 제 컴퓨터에는 4GB의 RAM이 있기 때문에 이 정도의 메모리를 핸들할 수 있습니다.

솔루션:
차원당 400개의 정수 원소(I8)를 가진 3차원 배열은 배열 한 개당 약 64MB에 해당합니다. 하지만 이와 같이 작은 크기의 배열도 사용하는 데 제한 사항이 있습니다. 이 KB는 LabVIEW와 OS의 메모리 메니지먼트 대한 내용입니다.

크기가 큰 배열을 다룰 때, 몇 가지 제한사항이 있습니다.
-윈도우즈에서 어플리케이션들은 4GBT를 지원하지 않는 한 RAM의 2GB 밖에 인식하지 못합니다. 이는 모든 어플리케이션이 2GB를 공유한다는 말이 됩니다. 따라서 LabVIEW에서 2GB 이상으로 할당된 메모리는 윈도우즈의 가상메모리 안으로 들어가게 됩니다.
-사용가능한 RAM 용량을 넘어설 때 윈도우즈는 가상메모리라는 메모리를 사용합니다. 가상메모리 안에서 LabVIEW는 각 배열을 위해 연속적인 메모리 블럭을 필요로 합니다. 하드드라이브 조각모음을 통해 하드드라이브의 연속블럭 크기를 늘일 수 있습니다.
-LabVIEW는 각 차원당 2^32-1개의 원소까지 지원합니다(대부분 이런 극한에까지 직면하는 경우는 거의 없습니다.).


이런 제한 사항에 대한 몇 가지 해결 방법이 있습니다.
-큰 배열을 좀 더 작은 배열들로 나눠주세요. 예를 들어, 3D 배열 대신에 1D 배열을 만드세요.
-또 다른 방법은 데이터 타입을 바꾸는 것입니다.예를 들어 I32(4bytes)에서 I8(1byte)로 Data representation을 바꿉니다.
-NI DIAdem과 같이 대량의 자료를 분석하는 고성능 패키지를 사용합니다.

관련 링크:
MSDN: 4GT RAM Tuning
KnowledgeBase 2U4A7R6I: How Can Virtual Memory Help with Memory Issues in LabVIEW?

첨부:


LV_Mem_Error.jpg - LV_Mem_Error.jpg



리포트 날짜: 11/01/2005
마지막 업데이트: 01/04/2012
문서 번호: 3R09RCTJ