以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 内存——狐表的致命问题,准备入手狐表的慎重了 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=90589) |
-- 作者:yjf123 -- 发布时间:2016/9/17 18:47:00 -- 内存——狐表的致命问题,准备入手狐表的慎重了 狐表开发的软件,在使用过程中,内存会不断增加,不会释放内存。 只要操作次数达到一定次数系统就会崩溃(如果数据加载多一些,一天会闪退好几次。) 具体原因已经找到:窗口中有绑定到数据表的控件,关闭该窗口不会释放内存。 之前已发帖,也有例子:http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=89101&authorid=0&page=0&star=1
狐爸提供的方法:根本无法解决,执行下面代码会马上释放内存,但操作后内存又马上回来,系统依然崩溃,纯粹自欺欺人。 System.Diagnostics.Process.GetCurrentProcess().MinWorkingSet = new System.IntPtr(5)
实在是这个问题太严重,导致系统无法继续使用,才写这样的标题,希望引起注意! [此贴子已经被作者于2016/9/17 18:48:24编辑过]
|
-- 作者:hbhb -- 发布时间:2016/9/17 18:59:00 -- 表控件也如此吗?那可不得了。 |
-- 作者:鲁吉 -- 发布时间:2016/9/17 19:50:00 -- 网上搜来的: 让.NET程序快速释放内存的办法
[DllImport("kernel32.dll")] public static extern bool SetProcessWorkingSetSize(IntPtr process, int minSize, int maxSize); public static void GarbageCollect() { GC.Collect(); GC.WaitForPendingFinalizers(); GC.Collect(); } public static void FlushMemory() { GarbageCollect(); if (Environment.OSVersion.Platform == PlatformID.Win32NT) { Win32.SetProcessWorkingSetSize(System.Diagnostics.Process.GetCurrentProcess().Handle, -1, -1); } } NET里面还有一个类可以达到这个效果 System.Diagnostics.Process.GetCurrentProcess().MinWorkingSet = new System.IntPtr(5); 采用定时释放+窗体打开的时候,效果很好,估计程序占的内存会在20以下 |
-- 作者:hanxuntx -- 发布时间:2016/9/18 8:24:00 -- 还好吧。 |
-- 作者:blackzhu -- 发布时间:2016/9/18 9:07:00 -- 这个倒是没有留意,但是我的系统用了6-7年,没有发现崩溃现象呀. |
-- 作者:jspta -- 发布时间:2016/9/18 9:49:00 -- 内存占用大小,这个主要看你的数据加载量。一般也就在150m以下,连续使用软件一个月不退出的也没有崩溃,不过会有可能出现其他莫名的代码问题。这种BUG基本可以忽略了,懒得去深究了。 |
-- 作者:狐狸爸爸 -- 发布时间:2016/9/18 10:36:00 -- 我这个论坛,以前是windows 2003+sql server 2005, 4G内存,很稳定。
实在没办法,后来我只能设置了一下,IIS的应用程序池每天自动回收4次,SQL server每天自动重启3次(分别在6:00,12:30和18:30),总算没问题了。
我不是否定问题,我的意思是pc和andriod都多少都会这样,就是微软自己的服务端软件有时也这一样,可能苹果的ios会完美一点。
这没多年了,Foxtable在上万的企业用户中使用了,并不存在不稳定的问题。 可能你的情况比较特殊,在有彻底解决办法之前,建议: 如果你的窗口比较大,要频繁打开和关闭窗口,而且要长时间不关闭,那就做个计划,定时提醒客户重启foxtable吧,或者定期检查剩余内存,低于一定程度就提示用户重启。 或者改变一下设计思路,常用窗口打开后就不再关闭,之后只是显示和隐藏。 [此贴子已经被作者于2016/9/18 13:32:30编辑过]
|
-- 作者:xiaoohoo -- 发布时间:2016/9/18 10:43:00 -- 事实胜于雄辨,例子证明内存的确会上升。 等会再用VS试一下。 |
-- 作者:bahamute -- 发布时间:2016/9/18 12:00:00 -- 从狐表出现一直用到现在,还真没遇到过楼主这种情况,数据量特别大以应该考虑分批加载。 |
-- 作者:Hopenight -- 发布时间:2016/9/18 15:24:00 -- .Net的内存管理一般情况下是由框架自动管理的。一个对象从被销毁到对应内存空间被回收,是有一定时间间隔的。 这个框架已经被大量应用于实践中了。如果有这样的问题,肯定早就被发现了,每天好多人在帮助测试咧 |