추가 정보
PropertyObject 누출의 가장 일반적인 원인은 닫히지 않은 참조입니다.
따라서 이 경고는 LabVIEW가 모든 프로퍼티 객체 참조를 해제하기 전에 TestStand 엔진이 종료되기 때문에 발생할 수 있습니다. 참조 닫기 VI를 사용하여 LabVIEW 내에서 열린 모든 참조를 닫는 것이 좋은 LabVIEW 관행입니다.
변형 와이어는 PropertyObject에 대한 참조를 보유할 수도 있습니다. 그러나 배리언트는 명시 적으로 닫을 수 없으며 VI가 메모리를 떠날 때까지 해제되지 않습니다. 이 문제는 LabVIEW 2014에서 수정되었으며 다음 코드 변경이 LabVIEW 2014 이상에서 반드시 필요한 것은 아닙니다.
변형과 ActiveX 참조 사이의 변환을 동적으로 호출된 VI 내부로 이동하면 VI가 실행 완료 시 메모리에서 제거되므로 변형 데이터가 해제됩니다.
배경:
ActiveX 참조는 참조 사용자 수의 참조 수를 유지하여 작동합니다. 이 참조 횟수는 참조가 생성될 때 1로 초기화됩니다. 이 참조의 모든 사본은 참조 횟수를 증가시킵니다. 참조를 제대로 해제하려면 프로그램에서 참조 횟수를 줄여야 합니다. 참조 카운트가 0에 도달하면 시스템이 자동으로 참조를 해제합니다.
LabVIEW에서 참조 카운트는 새로운 와이어가 생성될 때마다 증가하며, 참조 닫기 VI를 호출하면 참조 카운트가 감소합니다. 그러나 새 와이어가 Variant 와이어 인 경우 참조를 명시 적으로 닫을 수 없습니다. 이 경우, 메모리를 해제하고 참조 카운트를 줄이는 유일한 방법은 변형을 포함하는 VI가 메모리를 떠나도록 하는 것입니다.
특히 재 호출 콜백 VI에 의해 처리되는 UIMessage를 사용할 때 VI가 메모리에서 언로드 되었는 지 확인하는 가장 좋은 방법은 동적으로 호출되는 VI를 사용하는 것입니다. 첨부된 VI와 예제는 PropertyObject 누출을 방지하기위한 적절한 사용법을 보여줍니다.