gpt4 book ai didi

asp.net - Environment.WorkingSet错误

转载 作者:行者123 更新时间:2023-12-02 04:14:37 24 4
gpt4 key购买 nike

Environment.WorkingSet错误地返回了我的asp.net应用程序的工作集,这是其应用程序池中的唯一应用程序。

在具有3GB RAM的Windows 2003 Server SP2中,Ram是 VMWare虚拟机,它报告的工作集为2.047.468.061字节(1952MBs),Process.WorkingSet值为75.563.008字节(72MBs)。

•GlobalMemoryStatusEx返回的内存状态值:

AvailExtendedVirtual : 0 
AvailPageFile: 4.674.134.016
AvailPhys: 2.140.078.080
AvailVirtual: 1.347.272.704
TotalPageFile: 6.319.915.008
TotalPhys: 3.245.568.000
TotalVirtual: 2.147.352.576

•GetProcessMemoryInfo()
Working Set : 55.140.352 
Peak Working Set: 75.571.200
PageFile : 94.560.256
QuotaPagedPoolUsage : 376.012
QuotaNonPagedPoolUsage : 33.261

•GetProcessWorkingSetSize()-最小值:204.800-最大值:1.413.120

•GetPerformanceInfo()
CommitLimit : 1.542.948 pages 6.319.915.008 bytes  
CommitPeak : 484.677 pages 1.985.236.992 bytes
CommitTotal : 417.514 pages 1.710.137.344 bytes
HandleCount : 57.012
KernelNonpaged : 8.671 pages 35.516.416 bytes
KernelPaged : 27.302 pages 111.828.992 bytes
KernelTotal : 35.973 pages 147.345.408 bytes
PageSize : 4.096 bytes
PhysicalAvailable : 508.083 pages 2.081.107.968 bytes
PhysicalTotal : 792.375 pages 3.245.568.000 bytes
ProcessCount : 43
SystemCache : 263.734 pages 1.080.254.464 bytes
ThreadCount : 1.038

找到新补丁后, http://support.microsoft.com/kb/983583/en-us,.NET版本更改为2.0.50727.3615,并且Environment.WorkingSet现在返回值:2.047.468.141。(比上一个大80个字节)

在具有3GB RAM的Vista机器上,Environment.WorkingSet和Process.WorkingSet值相似,大约为37 MB。

那么,为什么Environment.WorkingSet返回一个固定值?重新启动应用程序池不会更改任何内容,它始终返回相同的魔术值2.047.468.061。

我还设置了一个.NET 1.1.4322.2443应用程序,奇怪的是,每次在GetProcessMemoryInfo刷新时刷新页面时,WorkingSet都会从一组不相关的随机数(193.654.​​824、214.101.416、57.207.080、287.635.496)中返回一个数字。 ()返回期望的数字。

我还发现,通过模拟“NT AUTHORITY \ NetworkService”帐户运行应用程序时,不会发生此问题,Environment.WorkingSet返回.net v1.1和v2.0的预期数字。

我已经为Windows用户和NetworkService检查了诸如EnvironmentPermission的CodeAccessPermissions,但是找不到任何限制读取WorkingSet值的内容。

那么,是什么原因引起的呢?是错误,某些不正确的配置还是损坏的文件等?

最佳答案

Environment.WorkingSet是CLR对应用程序所需的内存空间的“估计”。如果您的应用程序(物理上)没有发生变化,那么它在每次加载时都应该是相同的值(我无法验证100%,但是应该足够正确才能继续进行。)。

它始终大于实际所需的大小,因为不确定所需的代码分支,但是如果操作系统发现未在使用它,则会减少内存。一个很好的例子是将应用程序最小化到任务栏以减小其大小。

关于asp.net - Environment.WorkingSet错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3451272/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com