首页 新闻 会员 周边 捐助

静态类和静态字段实例类的区别

0
悬赏园豆:10 [已解决问题] 解决于 2013-04-21 11:30

把一个类写成静态的,和把一个类写成实例的然后用静态字段保持,在内存分配上有区别吗?比如说:

 1 public static class Cache
 2 
 3 {
 4         //...
 5 }
 6 
 7 
 8  9 
10 public class Cache
11 {
12     //...
13 }
14 
15 static Cache  cache=new Cache();
16 
17 
18 cache变量和静态的Cache类在内存分配上有区别吗?
c#
garry的主页 garry | 菜鸟二级 | 园豆:495
提问于:2013-04-20 11:10
< >
分享
最佳答案
0

有区别,第一种 是Cache内的静态成员 分配在 加载堆中。

第二种, cache这个成员分配在加载堆上,然后Cache里的成员也会初始化进行分配

收获园豆:5
Qlin | 老鸟四级 |园豆:2403 | 2013-04-20 13:40
其他回答(1)
1

最大的区别在于内存。
静态方法在程序开始时生成内存,实例方法在程序运行中生成内存,
所以静态方法可以直接调用,实例方法要先成生实例,通过实例调用方法,静态速度很快,但是多了会占内存。
任何语言都是对内存和磁盘的操作,至于是否面向对象,只是软件层的问题,底层都是一样的,只是实现方法不同。
静态内存是连续的,因为是在程序开始时就生成了,而实例申请的是离散的空间,所以当然没有静态方法快,
而且静态内存是有限制的,太多了程序会启动不了。

从性能上说,静态方法效率要稍微高一些,但是它会常驻内存...
一些情况下使用静态方法是有好处的,因为对于静态方法无论你有多少个实例,



内存中要维护的一份拷贝。同时,某些方法,确实使用静态是比较恰当的..

收获园豆:5
妍珊 | 园豆:1169 (小虾三级) | 2013-04-20 16:58
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册