2015-07-26 1 views
1

VI будет удалено из памяти, если его ссылка закрыта, завершено выполнение и т. Д. Следствием этого является удаление ресурсов refnums, ... из-за автоматической сборки мусора.Правильно ли сказать, что VI, который содержит неинициализированный регистр сдвига, никогда не будет удален из памяти?

Похоже, что ВП с неинициализированными SR не удаляются из памяти, поэтому я могу хранить refnums в этом VI как TOP LEVEL vi, и они всегда живы (хотя его вызывающие абоненты закрыты, но не среда labview). Правильно ли это?

ответ

1

Правило для большинства ссылок, которое вы открываете явно, состоит в том, что ссылка будет автоматически закрыта, когда иерархия, созданная ссылкой в ​​режиме, простаивает. Иерархия определяется VI верхнего уровня, поэтому, если VI A вызывает VI B и VI B, получает новую ссылку на очередь, эта ссылка будет автоматически закрыта, когда VI A перестанет работать.

Обратите внимание, что это не влияет на фактический refnum (это просто 32-битное значение), а скорее на достоверность этой ссылки с API, который ее использует. Это означает, что если вы откроете ссылку из иерархии A и сохраните ее в SR в VI B, которая будет совместно использоваться с иерархией C, а затем закройте иерархию A, значение в SR все равно будет, но вы не будете быть в состоянии использовать его.

Также обратите внимание, что при открытии ссылки на ВП с программным управлением и ее запуске он сделает VI VI верхнего уровня.