千家信息网

VB.NET内存占用的解决方法

发表于:2024-11-18 作者:千家信息网编辑
千家信息网最后更新 2024年11月18日,本篇文章为大家展示了VB.NET内存占用的解决方法,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。VB.NET为我们带来了许多新的应用方式和代码编写方式,在一定
千家信息网最后更新 2024年11月18日VB.NET内存占用的解决方法

本篇文章为大家展示了VB.NET内存占用的解决方法,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

VB.NET为我们带来了许多新的应用方式和代码编写方式,在一定程度上大大提高了编程人员的编程效率。而且其应用方式多样化,灵活性等特点大大吸引着开发人员。

VB.NET内存占用方法一:将窗体隐藏或者最小化启动

下列VB.NET 2005代码片断通过窗体变量m_IsHide来控制是否将窗体最小化并隐藏,初始化为True。

为了运行下列代码,还需要一个NotifyIcon及一个与之关联的ContextMenuStrip,后者包含mnuShow和mnuHide菜单两枚。

  1. Private m_IsHide As Boolean = True

  2. Private Sub frmMain_Activated() Sub
    frmMain_Activated(ByVal sender As
    Object, ByVal e As System.EventArgs)
    Handles Me.Activated

  3. If m_IsHide Then

  4. Me.WindowState = FormWindowState.
    Minimized

  5. Me.Hide()

  6. Else

  7. Me.WindowState = FormWindowState.
    Normal

  8. Me.Show()

  9. End If

  10. End Sub

  11. Private Sub frmMain_Resize() Sub
    frmMain_Resize(ByVal sender As Object,
    ByVal e As System.EventArgs)
    Handles Me.Resize

  12. If Me.WindowState = FormWindowState.
    Minimized Then

  13. m_IsHide = True

  14. Me.Hide()

  15. End If

  16. End Sub

  17. Private Sub mnuShow_Click() Sub
    mnuShow_Click(ByVal sender As
    System.Object, ByVal e As System.
    EventArgs) Handles mnuShow.Click

  18. m_IsHide = False

  19. Me.WindowState = FormWindowState.Normal

  20. Me.Show()

  21. End Sub

  22. Private Sub mnuHide_Click() Sub
    mnuHide_Click(ByVal sender As System.
    Object, ByVal e As System.EventArgs)
    Handles mnuHide.Click

  23. m_IsHide = True

  24. Me.WindowState = FormWindowState.Minimized

  25. Me.Hide()

  26. End Sub

上述代码的功能是:

  • VB.NET可执行语句示例代码解读

  • VB.NET创建过程相关步骤详解

  • 如何对VB.NET流进行正确操作

  • 两种VB.NET发送邮件方法解读

  • VB.NET调用WinAPI实例探讨

1、 启动时最小化并隐藏

2、 点击mnuHide窗体隐藏

3、 点击mnuShow窗体恢复

4、 最小化时窗体隐藏

一句话,其实就是编程使窗体启动时最小化。

VB.NET内存占用方法二:Windows将程序占用的内存倒入虚拟内存可以造成小内存占用的假象。

乐天居上有篇文章"将物理内存的占用挪到虚拟内存里-----揭密篇 "对此有完整的介绍:"而是操作系统本身就有这个机制,即当程序不使用时(最小化),操作系统会调用某些命令,来将该程序占用的内存移至虚拟内存,只保留一小部分常规代码"

BOOL SetProcessWorkingSetSize(  HANDLE hProcess,  SIZE_T dwMinimumWorkingSetSize,  SIZE_T dwMaximumWorkingSetSize  );

"将 2个 SIZE_T 参数设置为 -1 ,即可以使进程使用的内存交换到虚拟内存,只保留一小部分代码。

事实上,使用该函数并不能提高什么性能,也不会真的节省内存。因为他只是暂时的将应用程序占用的内存移至虚拟内存,一旦,应用程序被激活或者有操作请求时,这些内存又会被重新占用。如果你强制使用该方法来 设置程序占用的内存,那么可能在一定程度上反而会降低系统性能,因为系统需要频繁的进行内存和硬盘间的页面交换。"

给出我在vb2005中的使用范例:

  1. Imports System.Runtime.InteropServices

  2. Module modMain Module modMain

  3. < DllImport("kernel32.dll")> _

  4. Public Function SetProcessWorkingSetSize()
    Function SetProcessWorkingSetSize( _

  5. ByVal hProcess As Integer, _

  6. ByVal dwMinimumWorkingSetSize As Integer, _

  7. ByVal dwMaximumWorkingSetSize As Integer) _

  8. As Integer

  9. End Function

  10. < DllImport("kernel32.dll")> _

  11. Public Function GetCurrentProcess()
    Function GetCurrentProcess() As Integer

  12. End Function

  13. Public Sub ReduceMem() Sub ReduceMem()

  14. SetProcessWorkingSetSize(GetCurrentProcess, -1, -1)

  15. End Sub

  16. End Module

使用ReduceMem()函数的效果很赞,但是不建议经常用,我只是在FormLoad时用一下,效果就很好了。

值得一提的是,如果不使用GetCurrentProcess()函数得到当前Process,而是使用Process.GetCurrentProcess(),则无法有效缩减使用内存。

上述内容就是VB.NET内存占用的解决方法,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

内存 代码 窗体 方法 最小 程序 系统 应用 函数 方式 编程 操作系统 人员 内容 只是 就是 应用程序 性能 技能 效果 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 bim数据库构建组成数据表 联想服务器插入内存条不识别 长沙飞凌网络技术服务有限公司 江阴华硕服务器维修报价 什么是cach数据库 卫宁健康互联网科技有限公司 奉贤区提供网络技术代理商 微信为什么老提示无法连接服务器 设计数据库数据表中文字长度 进入阿里云服务器 虚拟化服务器系统出问题了怎么办 下列可以保护网络安全 互联网的科技创业 松江区国内网络技术优势 群晖docker连接数据库 软件开发试用期转正自我评价 数据库的路径如何填写 腾讯客流量分析数据库 大数据库发展历程 网络安全方面的会议 网络安全隔离装置价格 服务器硬盘坏了怎么看规格 网络安全师 工作任务 北京语音网络技术分类服务保障 龙芯软件开发22 移动网络技术岗职责 荣耀 嵌入式软件开发 查看系统所有已创建数据库代码 mysql数据库 有事务吗 零基础学习软件开发好吗
0