日期:2014-05-18  浏览次数:21011 次

C#程序中的几个疑问
1.在一个事件中申请的内存空间(譬如数组,变量之类),在事件结束的时候是自动完全释放么?还是需要什么操作才能释放?
2.把多次重复的操作写成方法,方法申请的内存空间是在方法执行的时候才申请,执行完了就释放还是程序一运行就申请,直到程序完成再释放?
3.在程序中执行一个事件(一次或N次)之后,出现程序跑死,可能是什么原因?是因为内存空间未释放的原因么?
谢谢。

------解决方案--------------------
1&2:.net中的内存资源释放是由GC做的.
至于gc啥时候会释放...这个说不准.

3:这个原因就太多了.不好说.
------解决方案--------------------
1. 什么时候释放,关你X事。。。
2. 方法定义成什么类型的?静态的话公用一个实例,否则每个对象创建一个实例。
3. 看下系统的内存使用情况,是否存在内存泄漏问题,有的话要考虑程序优化问题了。
------解决方案--------------------
1.在一个事件中申请的内存空间(譬如数组,变量之类),在事件结束的时候是自动完全释放么?还是需要什么操作才能释放? 
=================================
值类型的是由系统自己释放的(所以在C中数值类型的没有GC机制也没有问题),引用类型的是GC释放的。

2.把多次重复的操作写成方法,方法申请的内存空间是在方法执行的时候才申请,执行完了就释放还是程序一运行就申请,直到程序完成再释放?
 ================================================================================
把多次重复的操作写成方法,运行的时候会把它编译成本地机器代码并且缓存,下次再运行同样的方法时就不需要再次编译了(JIT编译过程)。

3.在程序中执行一个事件(一次或N次)之后,出现程序跑死,可能是什么原因?是因为内存空间未释放的原因么? 
谢谢。
=============================================
可能是没有释放或者造成死锁等等,原因很多。
------解决方案--------------------
clr问题,重点看看垃圾回收的资料
------解决方案--------------------
学习加巩固 顶!