VB.net2000的自动垃圾回收机制到底管用么???????!!!!分类:电脑/网络程序设计其他编程语言
问题描述:
别跟我说VB2000自动释放内存,曾经深信这句话的我,如今已是伤痕累累,好几个大项目都差点毁在vb的内存问题上,C#我倒不知道..VB的回收内存速度太慢了,这只是保守的说,其实本人认为它根本不会回收内存.就算全部用上gc.collet也回收不了,而且越用越慢
在使用我的项目的时候,随着窗口的开开关关\控件的调用,内存一直飙,从14MB左右一路疯狂飙高,40分钟系统就崩溃了...上了补丁的XP可以不死机,但就定着不动了..如果虚拟内存文件大,可以维持到撑满,但录一条记录平均要等一个小时!!!!!!!,后来我学乖了开始nothing全局变量(工作量惊人...),结果内存开始有下走的现象(原来是一路向上..只占不放)但内存还是呈曲线上飙,40分钟到200多MB,于是我开始释放局部变量,在每个方法中都要释放!!!!!!!!!!!!!!!!!!!!!,而且还要区分哪些是引用!痛苦啊!!!
...结果三个月之后,满面憔悴的我终于发现内存接近正常了,虽然还不是释放的很干净,但能保证在一段时间内不会崩溃了..至少客户做的时候没再提过意见...我并没有优化什么代码,只是痛苦的释放了一些全局和局部变量,结果内存就不消耗的那么厉害了,你说奇怪不奇怪..但内存始终不是释放的那么干净,我算过了一分钟内曲线飙高2MB左右,有时更多照这样一来,真是早死不如晚死,想想将来还不如用java重新做呢...各位可怜可怜我吧,有什么好主意整理vb2000的内存的好东东,就告诉我吧!!!!!!!!!!我真的受不了了!!!!!有没有什么方法可以重新分配内存呢,就算会造成页中断我也在所不惜!!!!
另外Me.Refresh()是什么意义,能释放内存么?
解析:
很简单,你没有正确理解VB的内存自动回收机制,仔细看一下MSDN,好好研究一下相关的内容 。其实JAVA的内存自动回收机制与VB是类似的,如果你用VB.NET做不好 , 换用JAVA照样做不好 。
其实,你已经发现了为什么内存不能回收,只是你没意识到罢了 。
为什么要用全局变量呢?给你举个极端的例子吧:建立一个全局的Hashtable,然后将程序中创建的每一个对象实例加入到这个hashtable中,那么你将看到内存一直猛增,直到崩溃 。
正确的作法是:
1、尽量不用、少用全局变量和静态变量
2、如果没有必要 , 就不要把对象实例加到全局或静态的Hashtable、ArrayList之类的 *** 中去,除非你是想自己建立一个对象缓冲池
3、如果你自己要建立对象缓冲池 , 就一定要注意对象的清理,尽早将不用的对象从池中删除
4、找本好一点的数据结构,仔细学学其中关于自动内存回收的那几种机制 , 以后在程序中不要违反它们的要求前提条件 。
vb.net combobox 如何清空数据(1)如果ComboBox中的不是通过数据绑定得到的,用ComboBox.Items.Clear 方法 从 ComboBox 中移除所有项 。
'清除所有项
ComboBox1.Items.Clear()
'清除ComboBox1显示
ComboBox1.ResetText()
(1)如果ComboBox中的是通过数据绑定得到的,在用ComboBox.Items.Clear 方法 从 ComboBox 中移除所有项之前 , 先断开绑定的数据源 。
'断开数据源
ComboBox1.DataSource = Nothing
'清除所有项
ComboBox1.Items.Clear()
'清除ComboBox1显示
ComboBox1.ResetText()
VB如何删除指定目录下的文件夹 , 并且删除里面的子目录和文件并不会提示和删除到回收站Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If FolderBrowserDialog1.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
TextBox1.Text = FolderBrowserDialog1.SelectedPath
Else
MsgBox("OpenFolder Error", MsgBoxStyle.Critical)
【vb.net清空回收站 vb清空list的两种方法】Exit Sub
End If
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Try
If TextBox1.Text"" Then
My.Computer.FileSystem.DeleteDirectory(TextBox1.Text, FileIO.DeleteDirectoryOption.DeleteAllContents)
MessageBox.Show("Finished!")
End If
Catch ex As Exception
MessageBox.Show(ex.ToString)
End Try
End Sub
End Class
在VB.NET 2010编译运行通过 。
注意要加一个FolderBrowserDialog控件 。
vb.net 内存回收机制 。。。。一般.net的垃圾回收机制会在过程结束后进行垃圾回收,但是垃圾回收是比较消耗系统资源的,所以不可能经常被调用 。
如果你需要强制进行垃圾回收,可在过程最后添加如下代码:
GC.Collect()
强制进行垃圾回收
vb.net中怎么把文件删除到回收站Dim strFileName As String = "g:\test.txt"
If IO.File.Exists(strFileName) Then
My.Computer.FileSystem.DeleteFile(strFileName, FileIO.UIOption.OnlyErrorDialogs, FileIO.RecycleOption.SendToRecycleBin, FileIO.UICancelOption.DoNothing)
End If
关于vb.net清空回收站和vb清空list的两种方法的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。
推荐阅读
- 路由器不自动连接怎么设置,路由器不连线怎么设置
- 射击游戏apk,射击游戏apex
- 西瓜视频为什么有加v,西瓜视频为什么加广告
- linux多少条命令 linux命令有多少条
- python字典最小值,python字典求最小值
- 赖子直播说什么了,赖子口嗨
- 沈阳汽保工具直播,沈阳二手汽保工具设备
- python中的积分函数 用python积分
- 通过vncserver安装oracle,win10安装vncserver