互联网解决方案咨询

梦想有多大路就会有多远:作一颗IT量子
  首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

关于C#对象内存占用的试验

Posted on 2008-06-24 10:50  互联网粒子  阅读(1528)  评论(0编辑  收藏  举报

在对象中通常我们有时会用静态成员,或静态方法,有人说静态方法在应用程序一启动后就会加载到内存中去,这样会加快程序的运行,到底它占不占用对象的内存呢,来分析下
对象
[Serializable]
public class UserInfo
{
}
测试方法
UserInfo user = new UserInfo();
MemoryStream ms = new MemoryStream();
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(ms,user);
ms.Position = 0;
Console.Write(ms.Length);
一个没有内容的对象,它占用内存的大小为118个字节
在对象类中加入两个静态成员
static int a = 0;
static int b=1;
执行测试后发现还是占用118个字节,说明静态成员不占用对象的内存空间
在对象类中加入二个静态方法
public static void Get()
{
}
public static string getStr()
{
 return "";
}
运行测试程序发现还是占用118个字节,说明静态方法也不占用对象的内存
如果把static的方法改成非静态的方法,运行测试程序后发现还是占用118个字节,说明非静态方法类也不占用对象的内存空间.
但是当我在对象类中定义二个非静态成员
int aa =0;
string str = "ddd";
运行测试后,发现占用了141个内存字节,也就是非静态的变量会占用对象的内存空间