From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.



랩뷰에서 "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