首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

vb编译后程序运行超占内存,该怎么解决

2012-05-10 
vb编译后程序运行超占内存,该如何解决?自己用vb2005写了个小程序,可是编译后运行,占用内存达12MB,本以为是

vb编译后程序运行超占内存,该如何解决?
自己用vb2005写了个小程序,可是编译后运行,占用内存达12MB,本以为是自己的代码写的不好,于是我新建了一个windows应用程序项目,不添加任何代码直接编译,运行后占内存达11MB,请问这种现象正常吗,反正我觉得很不正常,应该如何操作才能使编译后的程序少占内存?请高手明示,谢谢了!

  以下是代码,请高手帮我看看,如何修改,能提高效率,少占内存?

Public Class ManiGUI
  Dim SelectedFileName As String = ""
  Dim SelectedFilePatch As String = ""
  Dim SelectedFileProcess As Process()


  Private Sub notifyicon1_Doubleclick(ByVal sender As Object, ByVal e As System.EventArgs) Handles NotifyIcon1.DoubleClick
  Me.Show()
  Me.WindowState = FormWindowState.Normal
  Me.Activate()
  End Sub '双击恢复

  Private Sub SelectFile_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SelectFile.Click
  OpenFileDialog1.ShowDialog()
  End Sub

  Private Sub OpenFileDialog1_FileOk(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles OpenFileDialog1.FileOk
  SelectedFilePatch = OpenFileDialog1.FileName
  SelectedFileName = System.IO.Path.GetFileNameWithoutExtension(OpenFileDialog1.SafeFileName)
  If SelectedFileName <> "" Then
  StarToWatch.Enabled = True
  End If
  End Sub

  Private Sub Quit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Quit.Click
  Me.NotifyIcon1.Visible = False
  Me.Close()
  Me.Dispose()
  System.Environment.Exit(System.Environment.ExitCode)
  Application.Exit()
  End Sub

  Private Sub StarToWatch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles StarToWatch.Click
  Timer1.Enabled = True
  Me.NotifyIcon1.BalloonTipText = "正在守护 " + SelectedFileName
  NotifyIcon1.ShowBalloonTip(30)
  Me.Hide()
  End Sub

  '最小化缩到右下角 
  Private Sub ManiGUI_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.SizeChanged

  If Me.WindowState = FormWindowState.Minimized Then
  If SelectedFileName = "" Then
  Me.NotifyIcon1.BalloonTipText = "守护进程"
  Else
  Me.NotifyIcon1.BalloonTipText = "正在守护 " + SelectedFileName
  End If
  NotifyIcon1.ShowBalloonTip(30)
  Me.Hide()
  End If
  End Sub


  Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
  SelectedFileProcess = Process.GetProcessesByName(SelectedFileName)
  If SelectedFileProcess.Length > 0 Then
  Return
  Else
  Dim SelectedFileProcess1 As New Process
  SelectedFileProcess1.StartInfo.FileName = SelectedFilePatch
  SelectedFileProcess1.Start()
  End If
  End Sub
  Private Sub 显示ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 显示ToolStripMenuItem.Click
  Me.Show()
  Me.WindowState = FormWindowState.Normal
  Me.Activate()
  End Sub

  Private Sub 退出ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 退出ToolStripMenuItem.Click
  Me.NotifyIcon1.Visible = False
  Me.Close()
  Me.Dispose()
  System.Environment.Exit(System.Environment.ExitCode)
  Application.Exit()
  End Sub


End Class
Public Class ToolStripMenuItem


End Class

[解决办法]
.net的占用内存都比较大,可以使用vb6看看
[解决办法]
转.NET区,这个和VB6是两种语言
[解决办法]
没办法
[解决办法]
VB6只添加一个窗体,其他什么都不加,编译后运行程序照样占4~5MB的内存
我在猜是不是VB封装库的问题
[解决办法]
那就不用.NET。
这样比较从根本解决问题。
[解决办法]
我觉得应该不是程序的原因,要不LZ在新项目中,用生成exe文件后,直接通过双击运行该exe文件,看看结果如何,不会占用那么多内存了吧!
[解决办法]
只要脱离不了framwork,内存的占用量就会非常大,如果不想太占用内存可以尝试写非托管机制的代码
用vc写
[解决办法]
DoubleClick 的时候用线程试一下
 判断线程是否中止用 
thread1.ThreadState = ThreadState.Stopped
[解决办法]
现在内存比白菜还贵,既然使用了.net就不要操心这个了
[解决办法]
听说GC的优化可以没试过,也有个API可以调进程内存所占的大小的.
你可把这个程序最小化.看看还占多少内存.会有惊喜的.

热点排行