以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  大家有没有这样的情况···  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=8678)

--  作者:mr725
--  发布时间:2010/11/25 22:17:00
--  大家有没有这样的情况···
当狐表最小化后,你操作其他程序,十几分钟后半小时后再点击最小化的狐表(也就是最大化),反应特慢··· 要数秒钟才能使其最大化。 不知道大家有没有这种感觉,难道是我的配置太低了~~~
--  作者:czy
--  发布时间:2010/11/25 23:09:00
--  
没碰到过。
--  作者:程兴刚
--  发布时间:2010/11/25 23:35:00
--  

正常!

        在microsoft.NET开发环境中编写的代码可分为两类,受控代码和不受控代码,简单地讲,在.NET Framework中编写的受公共语言运行时(CLR)控制的代码称为受控代码,而不受CLR控制的代码称为不受控代码。

        受控代码享有许多由CLR提供的特性,其中包括自动内存管理和无用存储单元收集、跨语言的集成、语言无关性、丰富的异常处理功能、改进的安全性、调试和分析、版本控制以及部署等。在无用存储单元收集器(GC)的帮助下,CLR自动管理对象的生存期,当GC发现一个对象在一定时间内一直未被使用时,CLR将自动释放与此对象相关联的资源,并从内存中将此对象删除,当然也可以通过编程来控制对象的生存期。

        使用microsoft Visual Studio.NET既可以编写受控应用程序,也可以编写不受控应用程序,可以使用Visual C++ 7.0在Visual Studio.NET中编写不受控代码。Managed Extensions to C++(MC++)是编写C++受控代码的方式。使用C#和Visual Basic.NET编写的代码是受控代码。

 

        因此可以看出,狐表的开发编写的代码方式应该是受控代码,当程序一定时间不使用时,CLR自动释放了与其相关联的资源,并从内存中将其删除,当您再次使用(或激活)狐表时,这些被释放资源需要被重新加载,并将其加载到内存,这就相当于与重启狐表“差之毫厘”自然就会出现您的现象,其实大家都存在您的问题,只是电脑的配置差异,有的感觉不会太明显。

 

        上述理由也真实反映了狐表相对于Visual C++ 编写的程序,首次启动较慢(或者说狐表自身启动较慢)的主要原因,所以只要贺老师在优化了狐表的自身设计后,再出现慢可能也是他本人无能为力的了(自从我在GDI+图形程序设计中见到了受控代码和不受控代码的这一段解释后,就一直没有在狐表的启动问题上去一味地找狐表自身原因),其理由就勿用解释了。

        (也许我最后一段的分析不对,请别拍砖!)

[此贴子已经被作者于2010-11-25 23:35:51编辑过]

--  作者:狐哥
--  发布时间:2010/11/26 10:06:00
--  

程兴刚 何许人也?

我在海边看浪花时,你却钻到海底看浪花生成原理?

厉害,佩服!


--  作者:lxl
--  发布时间:2010/11/26 20:00:00
--  

呵呵,我说说我的理解:

 

垃圾回收器(GC)释放的对象是没办法恢复的。他只会释放肯定没用的垃圾数据。

foxtable的有用对象是不会被GC释放的。

GC释放的是没有引用的对象,比如各种事件处理函数内定义的变量、对象。比如打开的窗体,调用了Close方法之后

函数执行完之后,这些变量、对象就成了垃圾。GC会在需要的时候来打扫这些垃圾。

C/C++ 的垃圾对象必须程序员自己释放。

 

楼主这种现象应该是foxtable所占用的内存长时间不使用,被转移到虚拟内存(硬盘上)了,

当你再次点击foxtable的时候,又会把虚拟内存的内容转移到物理内存,物理内存的内容交换到虚拟内存(页交换)

一般只有物理内存不足的时候才会发生这种情况。

 


--  作者:baoxyang
--  发布时间:2010/11/26 22:35:00
--  
以下是引用程兴刚在2010-11-25 23:35:00的发言:

正常!

        在microsoft.NET开发环境中编写的代码可分为两类,受控代码和不受控代码,简单地讲,在.NET Framework中编写的受公共语言运行时(CLR)控制的代码称为受控代码,而不受CLR控制的代码称为不受控代码。

        受控代码享有许多由CLR提供的特性,其中包括自动内存管理和无用存储单元收集、跨语言的集成、语言无关性、丰富的异常处理功能、改进的安全性、调试和分析、版本控制以及部署等。在无用存储单元收集器(GC)的帮助下,CLR自动管理对象的生存期,当GC发现一个对象在一定时间内一直未被使用时,CLR将自动释放与此对象相关联的资源,并从内存中将此对象删除,当然也可以通过编程来控制对象的生存期。

        使用microsoft Visual Studio.NET既可以编写受控应用程序,也可以编写不受控应用程序,可以使用Visual C++ 7.0在Visual Studio.NET中编写不受控代码。Managed Extensions to C++(MC++)是编写C++受控代码的方式。使用C#和Visual Basic.NET编写的代码是受控代码。

 

        因此可以看出,狐表的开发编写的代码方式应该是受控代码,当程序一定时间不使用时,CLR自动释放了与其相关联的资源,并从内存中将其删除,当您再次使用(或激活)狐表时,这些被释放资源需要被重新加载,并将其加载到内存,这就相当于与重启狐表“差之毫厘”自然就会出现您的现象,其实大家都存在您的问题,只是电脑的配置差异,有的感觉不会太明显。

 

        上述理由也真实反映了狐表相对于Visual C++ 编写的程序,首次启动较慢(或者说狐表自身启动较慢)的主要原因,所以只要贺老师在优化了狐表的自身设计后,再出现慢可能也是他本人无能为力的了(自从我在GDI+图形程序设计中见到了受控代码和不受控代码的这一段解释后,就一直没有在狐表的启动问题上去一味地找狐表自身原因),其理由就勿用解释了。

        (也许我最后一段的分析不对,请别拍砖!)

[此贴子已经被作者于2010-11-25 23:35:51编辑过]

 不知上述分析正确,但确实狐表运行方面有存在慢的原因,我发布的客户端,大部分用户都说打开项目后,其它操作速度受影响,狐表运行也慢。当然这个配置有关系统,我电脑配置算一般,但也感觉出来慢,只不过销微有点好转。

在这里,有问题想请教下,如果狐表发布的项目在远程访问数据库时,网速慢的时候,是否影响其它系统的操作速度?


--  作者:狐狸爸爸
--  发布时间:2010/11/27 9:16:00
--  
以下是引用baoxyang在2010-11-26 22:35:00的发言:

 不知上述分析正确,但确实狐表运行方面有存在慢的原因,我发布的客户端,大部分用户都说打开项目后,其它操作速度受影响,狐表运行也慢。当然这个配置有关系统,我电脑配置算一般,但也感觉出来慢,只不过销微有点好转。

在这里,有问题想请教下,如果狐表发布的项目在远程访问数据库时,网速慢的时候,是否影响其它系统的操作速度?

 

1、应该是LXL版主的分析正确。

2、易表是个大型软件,对内存要求高,如果机器性能不好,启动后多少对于系统的运行有些影响。

3、网速慢,狐表在加载和保存上耗费的时间更多,自然会影响系统的速度,特别是那些单核cpu的电脑。


--  作者:baoxyang
--  发布时间:2010/11/27 9:33:00
--  
以下是引用狐狸爸爸在2010-11-27 9:16:00的发言:

 

1、应该是LXL版主的分析正确。

2、易表是个大型软件,对内存要求高,如果机器性能不好,启动后多少对于系统的运行有些影响。

3、网速慢,狐表在加载和保存上耗费的时间更多,自然会影响系统的速度,特别是那些单核cpu的电脑。

第三种情况,网速慢时,针对部分单核CPU电脑有何建议提高整体运行速度呢?