使用大字符串时内存泄漏的解决方法

时间:2018-09-18 15:45:11

标签: excel vba

以下简单代码将一些单元格复制到剪贴板中,并将其作为文本数据取回。稍后,这些数据将被发布到内部Web服务,但是此时已被注释掉。 每次我运行脚本时,Excel的已用内存都会增加大约80MB(字符串大小的两倍)。我不知道垃圾收集器在哪里/为什么失败,以及我该怎么办。

If (select banned_till from users where userid = $1) = nil or < currentTime
   Insert in posts (col1, col2) values ('abc', 'xyz')
ELSE
   RAISE Exception "User is banned"
ENDIF

1 个答案:

答案 0 :(得分:0)

根本原因不是大字符串的处理。问题是调用MSForms.DataObj.GetText方法无法正确释放内存。 剪贴板访问也可以通过本机Windows API完成。这个网站http://access.mvps.org/access/api/api0049.htm展示了一个示例实现,该示例实现在我的测试中运行良好,即使它比MSForms提供的方法慢30%。