LabVIEW论坛

 找回密码
 注册

扫一扫,访问微社区

查看: 28652|回复: 207

[共享贴] 瞬间释放程序内存

    [复制链接]
发表于 2011-10-20 17:38:07 | 显示全部楼层 |阅读模式
USB-6009数据采集卡首发
本帖最后由 bincker 于 2012-1-4 14:10 编辑 3 R, {% L+ @; X2 J

8 u# l0 e8 D% s- x' j最近遇到一个问题,使用DB Tools操作ACCESS数据库的时候,发现在查询大量数据的时候,程序内存暴增,然后每查询一次都会有所增加,但把查询相关的程序关闭了,只要不退出LV,内存就不释放。
. ~; u  k9 \' Z, [9 c* O这时我用的查询语句是:SELECT C1,C2,C3.. FROM Table where ...,根据查询条件,有时会一次返回上万条数据,当查询结果中包括30列,2万多条记录时,内存要增加300MB左右。- r6 ~0 i9 _/ r4 B( M& W+ }
后来,搜索相关问题,得知可以通过查询数据分页的方式把一次查询分成多个子查询然后再拼接起来,强哥在一个帖子里回答说用LIMIT来限制每次返回的记录数,但ACCESS不支持这个指令,只能用繁琐的top语句来替代。
5 Z0 n  ^4 M% J5 k  `5 L这时,我用的查询语句是:SELECT TOP 1000 C1,C2,C3... FROM Table where ...,根据返回记录数是否小于1000(假如设定每次返回1000条),来判定是否查询结束,内存问题有所改善,返回30列,2万多条记录时,内存增加100MB左右。
+ ^; \9 P# ~- b# i6 L但仍然不能彻底解决问题。
( w3 p9 s( ^% }$ S
( G4 t1 W# ~5 F6 \% R6 H1 p6 q/ N# B6 z偶然,我发现360安全卫士提供的任务管理器可以优化内存,占用几百兆内存的程序一优化就剩下几十兆或几兆了,他是怎么做到的呢?windows肯定提供了这个机制。
  r  H4 i6 X7 @- W# f5 T
3 W/ `3 T  n) m* j- C' ?7 l我就在网上搜啊搜啊搜,终于被我找到了,一个叫empty.exe的程序,调用这个程序可以清理程序的内存。( r4 c2 _9 S3 J
调用方法:empty  {pid | task-name}
2 [# @  Q6 S, h* g. x# c1 W
8 _4 Q# R$ C) h( b$ l省心了,呵呵。
4 L( W+ }! w8 X  g回个帖子,就把这个empty给你了
4 F+ F2 w* C& A: K' e
- {6 m+ Q7 S0 O" \' r& D0 |- L; z/ E1 a3 @! T/ J1 C- f
游客,如果您要查看本帖隐藏内容请回复

; ^  c% [6 |0 d) }8 ^7 p- Y8 b( M
游客,如果您要查看本帖隐藏内容请回复
IDAQ-USB-6009数据采集卡
发表于 2011-10-21 14:32:10 | 显示全部楼层
在线课堂
这个太简单了,俺也提供一个dll。嵌入你的程序内,随时随地爱怎莫释放就怎莫释放!' n- J# K* x2 w# `; Z# m  p! n( v
调用方式:0 a- g" e9 [5 N+ g
void FreeMem(void);
! X" T7 U% }; @6 f! X- M& o8 y简单吧,没有参数。有没有返回值(方便LV们使用! )。  j5 o1 |$ y  w! J3 k% A" j
FreeMem.rar (2.4 KB, 下载次数: 391)

评分

参与人数 3威望 +20 V币 +200 收起 理由
bincker + 200 很给力!
herny1016 + 10 mark,虽然现在用不到,但是收了以防以后要.
iwanttofly + 10 很给力!

查看全部评分

回复 支持 1 反对 0

使用道具 举报

发表于 2011-10-20 18:32:38 | 显示全部楼层
不错,看看啊。
发表于 2011-10-20 19:30:15 | 显示全部楼层
看一看什么样子的。。
发表于 2011-10-20 19:32:35 | 显示全部楼层
谢谢分享,我正需要啊,access数据库清空了,大小不变,不过写入查询速度会变快,网上查了下 好像是运行机制的问题  这个问题有什么好的解决方案不?
发表于 2011-10-20 20:32:27 | 显示全部楼层
楼主真用心啊,值得学习。
发表于 2011-10-20 21:21:15 | 显示全部楼层
Look Look
发表于 2011-10-21 07:57:04 | 显示全部楼层
经典啦!收藏了,
发表于 2011-10-21 08:00:02 | 显示全部楼层
本帖最后由 btlec0553 于 2011-10-21 08:01 编辑
& N( e! W/ Y( p! y0 y% p7 j- I6 q( R+ A* z: U- p
有木有什么方法将这个EXE文件嵌入LabVIEW中呢?期待中……(LabVIEW中自带的“释放内存”效果怎样呢?)
发表于 2011-10-21 08:14:52 | 显示全部楼层
听起来不错,看看先,还没用
发表于 2011-10-21 08:27:38 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|无图浏览|手机版|网站地图|虚拟仪器家园 ( 沪ICP备06029130号-1 )

GMT+8, 2019-2-18 15:47 , Processed in 0.032009 second(s), 25 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表