值类型和引用类型的区别是什么?为什么要设计值类型?值类型会被GC回收吗?值类型是否能在托管堆分配
答案:2 悬赏:60 手机版
解决时间 2021-03-11 17:18
- 提问者网友:回忆在搜索
- 2021-03-10 22:21
值类型和引用类型的区别是什么?为什么要设计值类型?值类型会被GC回收吗?值类型是否能在托管堆分配
最佳答案
- 五星知识达人网友:摆渡翁
- 2021-03-10 23:59
1、 值类型直接存储其值;引用类型存储的是对其值的引用;值类型默认分配在栈上,但可以通过装箱操作将值类型数据复制到堆上;引用类型仅能被CLR分配到堆中,但引用的地址保存在栈上。
2、所有说,装箱是要耗费系统资源的,如不是必须不要频繁进行装箱拆箱操作。
3、下面回答你值类型会不会被GC回收。回答是否定的。解说如下:
一般情况下, new 一个引用类型时, 是在堆上分配内存,而值类型是在栈上, 当某方法返回时, 栈会恢复到该方法调用前的状态, 该方法在栈上分配的值类型的内存自然就释放了, 不必等GC。 而引用类型是在堆上分配, 栈上保存着一个地址而已, 当栈释放后, 即使对象已经没有用了, 但堆上分配的内存还在,只能等GC收集时才能真正释放。
2、所有说,装箱是要耗费系统资源的,如不是必须不要频繁进行装箱拆箱操作。
3、下面回答你值类型会不会被GC回收。回答是否定的。解说如下:
一般情况下, new 一个引用类型时, 是在堆上分配内存,而值类型是在栈上, 当某方法返回时, 栈会恢复到该方法调用前的状态, 该方法在栈上分配的值类型的内存自然就释放了, 不必等GC。 而引用类型是在堆上分配, 栈上保存着一个地址而已, 当栈释放后, 即使对象已经没有用了, 但堆上分配的内存还在,只能等GC收集时才能真正释放。
全部回答
- 1楼网友:罪歌
- 2021-03-11 01:33
搜一下:值类型和引用类型的区别是什么?为什么要设计值类型?值类型会被GC回收吗?值类型是否能在托管堆分配
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯