兔八哥极品软件园    运行: 4499天 | 文章:640 篇 | 评论:505 条 | 碎语:1条

c# object 占用内存大小

作者:admin 发布于:2014-3-6 23:40 Thursday 分类:.NET


测试代码:

 private void button2_Click(object sender, EventArgs e)
        {
            int num = 1;
            MessageBox.Show(GetObjectSize(num).ToString());

            DataSet ds = new DataSet();

            MessageBox.Show(GetObjectSize(ds).ToString());

            DataTable dt = new DataTable();

            dt.Columns.Add("name", typeof(string));

            DataRow dr = dt.NewRow();
            dr["name"] = "abc";
            dt.Rows.Add(dr);
            ds.Tables.Add(dt);

            MessageBox.Show(GetObjectSize(ds).ToString());
        }

        public long GetObjectSize(object obj)
        {
            MemoryStream ms = new MemoryStream();
            BinaryFormatter formater = new BinaryFormatter();

            formater.Serialize(ms, obj);

            ms.Position = 0;
            return ms.Length;
        }

"在C#里,是不能直接获取object占用内存大小的,因为它根本不是一个标准的布局。" 

".net的对象占用的空间,跟其它非托管程序是一样的,只是大部分的对象,由于是托管的,而且没有规定内存布局,所以我们无法获得其真正占用内存的大小."

参考:http://zhidao.baidu.com/question/73668016.html

标签: object


Powered by 兔八哥极品软件 苏ICP备12049267号 sitemap