Dav*_*New 2 .net c# garbage-collection azure-web-sites azure-app-service-plans
是否可以在Azure App Service上使用服务器垃圾收集?
我gcServer在web.config(D:\ home\site\wwwroot\web.config)中设置如下:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
<gcServer enabled="true" />
</runtime>
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath=".\MyApplication.exe" arguments="" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false" />
</system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)
但GCSettings.IsServerGC仍然返回错误.
根据这个,你可以看到这句话:
如果未启用服务器垃圾回收,则工作站垃圾回收有效(有或没有并发收集).服务器垃圾回收仅在多处理器计算机上可用.
默认情况下,如果您的Web应用程序服务计划是多处理器,如B2,S2,它将自动启用gcServer.
但是,如果您的Web应用程序服务计划是B1,S1,它只有一个核心,它将启用工作站.
这是测试示例:
我有一个页面,其中包含以下代码:
string result;
if (GCSettings.IsServerGC == true)
result = "server";
else
result = "workstation";
Response.Write(result);
Run Code Online (Sandbox Code Playgroud)
然后我将Web应用程序发布到不同的应用服务计划.(B1,B2)
结果如下: