栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

WPF 内存释放

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

WPF 内存释放

 方法一:

GC.Collect();
GC.WaitForPendingFinalizers();
if (Environment.OSVersion.Platform == PlatformID.Win32NT)
{
  SetProcessWorkingSetSize(System.Diagnostics.Process.GetCurrentProcess().Handle, -1, -1);
}
 
[DllImport("kernel32.dll")]
private static extern bool SetProcessWorkingSetSize(IntPtr proc, int min, int max);

通过通知系统最大最小化来触发内存释放,不过该方法也只是将部分内存移至虚拟内存中。

方法二:

Nuget 中 Lierda.WPFHelper,再AppStratup时,new一下,然后内存基本可以压缩到50MB以内,这个DLL每30s压缩一次内存,最低可以压缩到10MB。

/// 
/// App.xaml 的交互逻辑
/// 
public partial class App : Application
{
    LierdaCracker cracker = new LierdaCracker();
    protected override void OnStartup(StartupEventArgs e)
    {
        cracker.Cracker(100);//垃圾回收间隔时间
        base.OnStartup(e);
    }
}

PS:通过反编译得知,该方法的原理也是方法一。

 

总之不是真的释放内存,但是只是为了一个立竿见影的效果,可以临时用一下。

本身会更加损耗硬盘。同时如果程序有内存泄露的问题,也依然会出现内存溢出的情况。

这里有大神总结的结论,我就不重复粘贴了:https://www.cnblogs.com/kex1n/p/4043901.html

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/911440.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号