首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 用new生成的窗体,用unload能够完全释放内存吗?
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hrex
    • 等级:
    发表于:2008-06-19 10:42:00 楼主
      用new生成的窗体,用unload能够完全释放内存吗?是不是一定要set nothing
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Leftie
    • 等级:
    发表于:2008-06-19 10:50:051楼 得分:0
    set 窗体名 = nothing
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • alifriend
    • 等级:
    发表于:2008-06-19 10:50:342楼 得分:0
    每个都写上set nothing不就完了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-19 10:55:083楼 得分:0
    unload:释放窗体句柄
    set ... = Nothing:释放对象

    如果你在窗体上没有正确释放某些资源,那么就达不到完全释放的目的。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-19 11:14:514楼 得分:0
    学习中。。。。

    问一下,释放窗体句柄和释放窗体对象

    它辆个的据体差别是什么?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hrex
    • 等级:
    发表于:2008-06-19 11:29:235楼 得分:0
    怎么给每个都写上每个窗体都写上set nothing
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-19 13:15:056楼 得分:0
    做个不恰当的比喻:
    窗体对象就是手机号码,窗体句柄就是手机,要合起来才能发挥功能;
    释放窗体句柄就是丢弃手机,释放对象就是销号。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zskq1
    • 等级:
    发表于:2008-06-19 23:06:317楼 得分:0
    引用 6 楼 Tiger_Zhao 的回复:
    做个不恰当的比喻:
    窗体对象就是手机号码,窗体句柄就是手机,要合起来才能发挥功能;
    释放窗体句柄就是丢弃手机,释放对象就是销号。

    比喻的太好了.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Sandrer
    • 等级:
    发表于:2008-06-20 08:00:588楼 得分:0
    其实它能做到的只是告诉系统:“我这个程序里的这部分内存已经清空了,但是我还占有它,一会有其它变量、窗体、控件需要使用的时候我还得用它!!”

    结论只有一个:我只看过内存一直攀升,没见过内存会在运行时会发生明显的变化(例如大比率增加或减少)
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-20 08:47:079楼 得分:0
    内存使用是先按一定的块大小分配给程序的堆栈,然后在堆栈上在进行变量(包括对象)的分配,所以少数小对象的分配/释放是不影响内存使用数的(堆栈的总容量不变)。
    下面的代码可以影响到内存使用数:
    VB code
    Option Explicit Dim a() As Variant Private Sub Command1_Click() ReDim a(&H10000 - 1) End Sub Private Sub Command2_Click() Erase a End Sub
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-20 10:14:1610楼 得分:0
    set nothing可以释放内存的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-20 10:42:0911楼 得分:0
    unload窗体后,加上一句:End 就搞定了

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-20 11:20:1812楼 得分:0
    怎样才能将窗体上引用的所有资源全部释放呢,请教高手!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-20 15:24:0513楼 得分:0
    引用 10 楼 zhufenghappy 的回复:
    set nothing可以释放内存的

    这是衣服穿完了就烧掉,不管钱包还在口袋里,不可取。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-20 15:25:3714楼 得分:0
    引用 12 楼 yubinjilin 的回复:
    怎样才能将窗体上引用的所有资源全部释放呢,请教高手!

    编程基本功,没什么捷径。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-21 12:11:4115楼 得分:0
    以前不知道释放对象和释放句柄的区别,现在终于知道了!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-22 12:02:1416楼 得分:0
    当窗体结束后
    加个"END"          '这样会释放所有在这个窗体中出现的对象.
    set obj=nothing  '释放对象占用的内存地址
    unload obj        '我不知道这会不会释放对象占用的内存地址?但我可能肯定的是有时候,在一些特定的场合,窗体会无故停留在进程内,但我能确定窗体内的事件代码都已完全执行完毕!?后来没办法只有用END
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-23 09:00:5417楼 得分:0
    用 END 进行释放是 Visual Basic 中最最误人子弟的。
    最早的 Basic 程序运行于 DOS 之类的单任务操作系统上,END 语句等于结束程序退回到操作系统。
    在 DOS 下,所有外部资源都通过中断进行访问,根本不存在缓冲区或句柄控制,只要没有进行中断挂钩,程序结束就等于完整地释放了。
    因此在某些“专假”地教授下,END就成了万能法宝了。

    外部环境不同了,要避免用 END。
    如果仅仅是数据库事务未结束,那么用 END 最多是本次事务被回滚。但是如果正在进行文件操作,END 可能会导致文件数据不一致导致无法使用。
    程序不能结束,只能是程序编得不好。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-23 09:28:1118楼 得分:0

    mark
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved