null 占 多少内存
假设对象a
a=null;
那么a 占多少内存?
和a的构造函数有关吗?
问题点数:0、回复次数:28Top
1 楼bitsbird(一瓢 在路上...)回复于 2005-03-04 18:38:53 得分 0
对象一旦创建,就在堆栈上分配内存Top
2 楼Sunmast(速马@Redmond, WA)回复于 2005-03-04 18:40:29 得分 0
0Top
3 楼godwater8(仙水)回复于 2005-03-04 18:53:12 得分 0
还是会占内存的
a=null 表示引用a指向0
a本身站的内存不变
只是a指向空而已Top
4 楼XueBoy163(菜刀之恋)回复于 2005-03-04 19:46:22 得分 0
a应该是4字节的
Top
5 楼Sunmast(速马@Redmond, WA)回复于 2005-03-04 23:52:45 得分 0
...
假如要把指针本身占用的内存算进去的话,没错,不是0...GC上的引用记录和指针占用的空间一样大吗?
啊,还有可能是,上下文已经再没有a需要了,编译器或者JIT直接干掉了a,这样,还是0
另外一种情况是,a是引用类型的对象,a原先在GC上分配的内存尚未释放,所以可能是正无穷大
...讨论这个问题是不是有点无聊?
从这个意义上来说,a占用多少内存和null占用多少是两个问题
但是看到楼主的标题是:null占好多内存
我相信不管是堆还是栈上都无法新建一个"null"对象的Top
6 楼chendazhi(不务正业)回复于 2005-03-05 08:30:46 得分 0
=null,不初始化,不分配内存
="",初始化,分配内存,内容是空串Top
7 楼dufr()回复于 2005-03-07 20:43:18 得分 0
怎么计算a的内存大小?Top
8 楼alexzhang00(三角猫)回复于 2005-03-07 20:59:50 得分 0
0Top
9 楼xushili(乞力马扎罗)回复于 2005-03-07 21:03:13 得分 0
代码托管就是为了让程序员把绝大多少精力用到业务逻辑中,还在讨论这个问题是不是有点钻牛角尖误入歧途的味道?Top
10 楼godwater8(仙水)回复于 2005-03-07 21:13:20 得分 0
好像没有讨论这个问题的必要
因为没有实际的应用价值Top
11 楼tsys2000(☆唐僧☆)回复于 2005-03-07 21:35:11 得分 0
markTop
12 楼yizhixiaozhu(天啦,手都起茧了)回复于 2005-03-07 22:37:51 得分 0
upTop
13 楼bthl(冰糖葫芦)回复于 2005-03-08 09:45:41 得分 0
0
0
0
0
0Top
14 楼sxuhai(海海)回复于 2005-03-08 09:55:05 得分 0
null不占内存Top
15 楼egxsun(egxsun)回复于 2005-03-08 10:26:18 得分 0
0Top
16 楼topycsdn(神木_草)回复于 2005-03-08 10:33:42 得分 0
代码托管就是为了让程序员把绝大多少精力用到业务逻辑中,还在讨论这个问题是不是有点钻牛角尖误入歧途的味道?
===================================
楼主写程序太累了,这问题讨论讨论休息休息,呵呵Top
17 楼WKF(逍遥)回复于 2005-03-08 10:35:45 得分 0
a不应该占内存。Top
18 楼superhasty(鸟儿自空中飞过)回复于 2005-03-08 10:42:11 得分 0
只能说在写了a=null以后,不增加占用的内存,也不减少占用的内存。
Top
19 楼xlkg_ss(我想学习)回复于 2005-03-08 11:20:06 得分 0
为空,应该是不占用内存了,释放掉了!Top
20 楼xlkg_ss(我想学习)回复于 2005-03-08 11:21:31 得分 0
就这个问题来说,c#到底需要不需要释放内存呢?怎么释放呢?
可以讨论一下阿!楼主不好意思,占用你的地方,我也是好奇这个问题!Top
21 楼topycsdn(神木_草)回复于 2005-03-09 14:12:04 得分 0
为空,应该是不占用内存了,释放掉了!
===================
错,a没有释放Top
22 楼iheshi(小适)回复于 2005-03-09 19:23:27 得分 0
嗯,说说自己的看法,这个要分情况讨论:
1、曾使用过a,然后才让a = null;的话。在堆里面不占空间。而在栈里面,还是要占用一些空间的。这个空间原来存放的是对原有的对象的引用(reference),现在为NULL了。
2、未使用过a,直接写a = null;这样的话,在栈里面也要占空间的。堆里不占用。
这样看来的话,只要写了a =,就一定会在栈里面开辟空间了。^_^Top
23 楼iheshi(小适)回复于 2005-03-09 19:25:26 得分 0
不过没有理解楼主的意思了。既然a是对象,它怎么能为NULL呢?Top
24 楼iheshi(小适)回复于 2005-03-09 19:26:14 得分 0
a其实只是放在栈里面的指向实际对象的一个Tag而已嘛。^_^Top
25 楼lw8122(随风)回复于 2005-03-24 12:37:35 得分 0
是4个节节,还是20个字节,有区别吗????、
null的变量,和整个程序占用的内存相比,完全是渣渣。
去优化程序的其它部分吧Top
26 楼oolongTea(顶者)回复于 2005-06-06 21:16:24 得分 0
null 和 DBNull 占的大小是一样的吗?Top
27 楼tttick(秉承一贯懒散的生活方式与严谨的工作态度¢)CodinG)回复于 2005-06-06 22:09:08 得分 0
呵呵。。有趣。。学习。。Top
28 楼lql9935(天涯孤客)回复于 2005-06-06 22:34:28 得分 0
好像不用占内容。
new 了之后才用吧!
Top




