首页 新闻 会员 周边

C# 静态变量会被gc回收么?

0
[已解决问题] 解决于 2014-06-12 13:54

C# 静态变量会被gc回收么?????????????

刘宏玺的主页 刘宏玺 | 专家六级 | 园豆:14020
提问于:2014-06-12 11:28
< >
分享
最佳答案
-1

静态变量不会被gc回收,但是静态变量所引用的对象会被gc回收

刘宏玺 | 专家六级 |园豆:14020 | 2014-06-12 13:54

怎么把这个弄城最佳答案了.

GC不会回收有已被引用的对象的.

GC回收的是已经无效的对象.只有引用存在,对象就不会被回收

吴瑞祥 | 园豆:29449 (高人七级) | 2014-06-12 13:58

@吴瑞祥: 额 我的意思是当静态变量引用变为unll的时候他之前引用的对象可以被回收

刘宏玺 | 园豆:14020 (专家六级) | 2014-06-12 14:00

@吴瑞祥: 我发现这是个大问题,值类型是不会被回收的,引用类型把引用置为null是可以被回收的

刘宏玺 | 园豆:14020 (专家六级) | 2014-06-12 14:02

@刘宏玺: ````这个算什么问题``.

垃圾回收本来回收的就是堆空间内的内存对象.值类型是在栈中保存,不需要被回收.因为栈空间内值变量出了作用域后.系统能自动回收的,不像堆里的变量,系统是不知道哪些能回收哪些不能回收的

吴瑞祥 | 园豆:29449 (高人七级) | 2014-06-12 14:11

@吴瑞祥: 不是这么回事吧,现在这个是类型是属于类的,按道理是放在堆当中的

刘宏玺 | 园豆:14020 (专家六级) | 2014-06-12 14:28

@吴瑞祥: 上面的有错别字

不是这么回事吧,现在这个值类型是属于类的,按道理是放在堆当中的

刘宏玺 | 园豆:14020 (专家六级) | 2014-06-12 14:28

@刘宏玺: 静态变量是在堆里还是在栈里真不清楚.是在问这个的不

吴瑞祥 | 园豆:29449 (高人七级) | 2014-06-12 14:35
其他回答(5)
0

其实回收的不是变量,是某个对象所占据的内存,如果存在一个对象,指向它的引用变量的数量为0,那个GC会择机回收它占据的内存。

会长 | 园豆:12401 (专家六级) | 2014-06-12 11:35

有道理,不过静态变量的引用什么时候会丢失?

支持(0) 反对(0) 刘宏玺 | 园豆:14020 (专家六级) | 2014-06-12 11:40
0

应用程序域卸载的时候回收静态变量

Launcher | 园豆:45045 (高人七级) | 2014-06-12 11:49
0

不会被GC回收,静态字段 分配在Loader heap 中,非 GC heap,不受GC控制。

Qlin | 园豆:2403 (老鸟四级) | 2014-06-12 12:28
0

之前看过一篇文章说静态变量的生命周期跟应用程序的生命周期是一样的

wolfy | 园豆:2636 (老鸟四级) | 2014-06-12 13:36
1

静态变量是放在栈里面的,不受GC控制,只有程序关闭退出,内存才会被回收

人不疯狂枉一生 | 园豆:199 (初学一级) | 2016-03-07 16:43
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册