Q
強制垃圾回收
5
A
回答
11
你不能直接使用VBA時.NET Framework提供垃圾收集的優勢。 Perhaps this article通過埃裏克利珀將有助於
3
VBA/Excel沒有垃圾收集,像老VB。它使用引用計數來代替GC。當您將指針設置爲空(或變量超出範圍時)時,內存將被釋放。就像在舊的VB中一樣,它意味着循環引用永遠不會被釋放。
+0
此處有一個已知問題的示例:https://support.microsoft.com/en-us/help/280454/password-prompt-for-vba-project-appears-after-excel-quits – 2017-04-22 19:31:50
3
你不能強迫GC在VBA,但它是很好的設置爲Nothing全局變量。
通過KD7提到的文章說了也沒用,他們走出去的範圍之前設置爲Nothing局部變量,但不會談論全局變量。
在VBA的模塊中定義的全局變量在整個的Excel會話仍然存活,即直到含有VBA模塊定義它們關閉該文檔。
所以不要把無用Set O = Nothing
當O爲局部的,但做到這一點時,它的全球性的。
相關問題
- 1. JDBC垃圾回收
- 2. Java:垃圾回收
- 3. C#垃圾回收
- 4. Java:垃圾回收
- 5. Erlang垃圾回收
- 6. java垃圾回收
- 7. Python垃圾回收
- 8. JS垃圾回收
- 9. Javascript垃圾回收
- 10. PhoneGap垃圾回收
- 11. java - 垃圾回收
- 12. 如何驗證/強制課程被垃圾回收
- 13. 在iOS上強制垃圾回收JavaScriptCore虛擬機
- 14. 垃圾回收問題
- 15. Java垃圾回收5
- 16. asp.net垃圾回收通知
- 17. nodejs垃圾回收輸出
- 18. .Net 4垃圾回收
- 19. context.detach - 用於垃圾回收
- 20. 垃圾回收太慢
- 21. Python線程垃圾回收
- 22. 查找垃圾回收根
- 23. 垃圾回收和cgo
- 24. Spidermonkey和垃圾回收
- 25. 每100秒垃圾回收
- 26. 垃圾回收Java類
- 27. Ruby/Rails垃圾回收
- 28. Javascript/ECMAScript垃圾回收
- 29. Perl XS垃圾回收
- 30. 關於Angular2「垃圾回收」
我不知道VBA使用了引用計數,並且不支持清理循環引用。這可能是下層問題。 最初的問題是,有時工作簿在關閉和在類的析構函數中被解除引用時沒有正確關閉。我認爲問題來自於對象尚未收集。最有可能的是我有一些循環引用了一些有時候會發揮作用的輪子。謝謝你的提示。 – Zen 2009-11-21 15:01:18
我同意,你不能直接從VBA做到這一點。但是如果你引用一個COM庫,你實際上可以利用.NET的GC。請參閱[**我的答案**](http://stackoverflow.com/questions/20398477/how-to-set-application-name-in-adodb-connection-string/20406284#20406284),特別是有關'.Dispose()'從VBA調用的方法。 – 2014-02-03 12:50:58