做了数据接收和传输的程序,用Queue做数据缓冲区,现在想知道缓冲区占了多大内存?不知道c#中是否能得到一个变量的内存占用量?还有如何得到pc的物理内存?谢谢!

解决方案 »

  1.   

    计算队列长度,然后乘以队列中对象的大小。其实严格来说,队列的长度 * 对象指针大小 = 队列内存占用数。对象是靠链接的,跟Queue不在一起!
      

  2.   

    好多天了,怎么没有人回答?我对在.net中如何取得变量(或对象)所占内存不是很清楚?不知道的也帮忙顶一下,好么?谢谢了
      

  3.   

    VS.net 2005 Tools-> Performance Tools -> Wizard 建立一个性能项目,里面看看
      

  4.   

    谢谢,这个我还真不知道,呵呵,不过,我需要在代码里实现这个,因为,我要定时纪录Queue的所占内存大小,并且还有根据这个值还有其他业务逻辑要做?
      

  5.   

    Web方面很久没做了可能说得不对,错了请见谅
    循环Queue中每个元素,然后取出来用Encoding.GetByteCount (String) 取得这个元素占的内存,如此将所有元素的加上应该差不多了。
      

  6.   

    我查了些资料,好像不行。我们是无法得到变量在CLR中内存占用的大小。http://blogs.msdn.com/cbrumme/archive/2003/04/15/51326.aspx
      

  7.   

    你要是不太在意那么精确,给你个土办法,做成DLL,然后找那种杀进程的工具,他可以看到一个进程调用的所有模块,并且显示内存好像瑞星卡卡就有这个功能
      

  8.   

    哈哈,其实我是想在代码里面得到这个值,就是在程序自己控制它。其实主要想实现当cache占用内存数量到达一定值得时候,就拒绝往cache添加数据。看来没有办法,