我已经设置了性能计数器,结果如下:
Memory Committed Bytes 10 145 739 948,0000 Pages Output/sec 0,0000 Paging File _Total % Usage 28,998 Process _Total w3wp Working Set 7 480 003 280 5 604 421 056
我还对w3wp进程进行了内存转储(当它为/ -2GB时,因为较大的转储失败).在转储上运行DebugDiag并没有让我更聪明.似乎.net本身只占用800MB而且大部分内存被“别的东西”占用.
.NET GC Heap Information GC Heap Size 826,09 MBytes Total Commit Size 1217 MB Total Reserved Size 16190 MB Heap Analysis Summary Number of heaps 29 Heaps Total reserved memory 1,89 GBytes Total committed memory 1,79 GBytes ... (largest of the Heaps) Reserved memory 1,69 GBytes Committed memory 1,67 GBytes(99,14% of reserved) Uncommitted memory 14,86 MBytes(0,86% of reserved) Number of heap segments 113 segments Number of uncommitted ranges 113 range(s) Size of largest uncommitted range 0 Bytes
问题是我不确定这种高内存使用是一个问题.所以我正在寻找的是如何处理这个问题的一些指导:
>有人告诉我这是IIS7的工作方式,我不应该担心内存.
>或者有人指出我如何进一步分析这个转储(特别是我怎么能看到1,6GB堆中的内容.
>或者向我解释为什么.net正在使用的内容和W3WP正在使用的内容之间存在如此大的差异.
如您所见,所有堆中的总字节数为1.12GB.当时,W3WP使用的是6.4GB.为什么这两个数字之间有这么大的差异?什么可以占用这个空间?这是我看到的LOH的碎片吗?
你应该做的第一件事是确定内存所在的生成堆(0,1,2或3(大对象堆))
Process Explorer提供了一种显示此信息的简便方法.
在大多数情况下,.NET GC是自我管理的.有一些.config参数可以调整它,但这实际上是开发人员应该提供指导的区域.
如果要检查堆,WinDbg可能是首选工具.
http://blogs.microsoft.co.il/sasha/2010/08/24/psscor2-object-inspection-commands-part-2/
http://blogs.microsoft.co.il/sasha/2010/08/26/psscor2-gc-heap-analysis-commands/
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。