关于C#对象内存占用的试验
2008-06-24 10:50
405 查看
在对象中通常我们有时会用静态成员,或静态方法,有人说静态方法在应用程序一启动后就会加载到内存中去,这样会加快程序的运行,到底它占不占用对象的内存呢,来分析下
对象
[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个内存字节,也就是非静态的变量会占用对象的内存空间
对象
[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个内存字节,也就是非静态的变量会占用对象的内存空间
相关文章推荐
- 关于C#的WebBrowser内存占用太大的解决办法
- 关于SizeOf测定JVM中对象占用内存
- c# 获取对象所占用的内存
- c# 获取对象所占用的内存
- 关于New对象的占用内存的问题
- 关于C#中对象内存状态的理解
- C# 给对象赋null值会释放内存吗?
- C#的对象内存模型
- java对象内存到底占用多少
- 关于Managed Thread Stack 内存占用
- 关于c# 中读取系统内存大小的问题。
- 一个Java对象到底占用多大内存?
- 关于c++中map的内存占用问题
- C#查看程序占用系统的内存
- 面向对象思想 - 关于对象(材料来自thinking in Java,这些东西是跟C#相通的,跟语言无关)
- JAVA内存使用--如何计算一个Java对象占用的字节数
- [C#]租约的Renew和“在主机应用程序域运行时始终”将对象保存在内存中
- 【JAVA内存】如何计算一个Java对象占用的字节数
- java 对象占用内存查看 以及JVM级别 方法修改等
- 关于HttpSession耗用内存和有效地销毁HttpSession对象的问题