我正在开发一个C#应用程序,它可以一直在系统托盘中运行.因此,我希望最小化应用程序在空闲时使用的内存量.使用
Windows perfmon和Windows任务管理器我得到了一些空闲内存使用数据.
> Windows XP TaskManager – 内存使用 – 96,300K
> PerfMon
> .NET CLR内存
>所有堆中的#Bytes – 34,513,708
> #Total committed Bytes – 40,591,360
> #Total保留字节数 – 50,319,360
我认为这些数字意味着我的应用程序已经被Windows分配了96MB的内存.其中50MB已分配给CLR. CLR分发了40mb.
有没有办法弄清楚尚未分配给CLR的其他46mb内存用于什么?我假设这将是用于将DLL加载到进程中的内存和此本机代码使用的内存的组合.
编辑:我已下载VMMap并找到以下内容.
>私人
>总计 – 72mb
>管理堆 – 25mb
>堆栈 – 16mb(看起来相当大)
>私人数据 – 13mb(不知道这是什么)
>图像 – 8mb(主要是.NET DLL)
>页面表 – 6mb(看起来相当大)
>堆 – 3mb
任何人都可以建议对Stack,Private Data和Page Table数字进行解释吗?
注意:我最初引用的计数器现在显示了一些奇怪的数字.
> Windows XP TaskManager – 内存使用 – 43,428K
> PerfMon
> .NET CLR内存
>所有堆中的#字节 – 20mb
> #Total committed Bytes – 23mb
> #Total保留字节数 – 50mb
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。