ASP.Net - w3wp在基本Web应用程序上消耗内存

时间:2016-12-16 21:37:16

标签: asp.net .net memory-leaks w3wp

我创建了一个非常基本的Web应用程序,试图通过生产Web应用程序来隔离我认为可能是内存泄漏的内容,其中w3wp进程在每次登录时消耗内存并且似乎不释放该内存。我注意到我的基本Web应用程序也在iisexpress / w3wp进程中消耗内存,只需运行应用程序并点击页面上的刷新即可。刷新页面20次后,托管进程(iisexpress / w3wp)消耗5 MB到14 MB的内存,但它不会释放。当我使用VS 2015的诊断工具拍摄内存快照时,内存量似乎保持相对平稳。

什么会导致托管进程占用这么多内存?如何减少或消除内存使用?

出于好奇,我在Page_Load事件中添加了对垃圾收集GC.Collect(3)的调用,这似乎可以保持内存使用率不变。查看GC.Collect()调用之前和之后的内存快照并不会显示任何一直被清理的内容。这只有在我为每个页面加载调用GC时才有效。每次调用GC并不像是一个很好的解决方案。

我在运行Windows 10的开发计算机上运行此操作。我正在使用IISExpress和IIS的默认主机设置。 Web应用程序是从一个空的4.6.1 asp.net Web应用程序项目构建的。该Web应用程序有一个Web表单页面login.aspx:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Login.aspx.cs" Inherits="WebFormTesting.Login" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="login" method="post" runat="server">
        <div>
            <div style="height: 250px; width: 500px; position: absolute; left: 380px; top: 120px;">
                <div class="clsText10">
                    <asp:TextBox ID="txtUsername" TabIndex="1" Width="160px" runat="server" ToolTip="Enter User Name"
                        MaxLength="100" Style="position: absolute; right: 130px; top: 5px;"></asp:TextBox>
                    <br />
                    <asp:TextBox ID="txtPassword" TabIndex="2" runat="server" ToolTip="Enter Password"
                        MaxLength="25" Width="160px" TextMode="Password" Style="position: absolute; right: 130px; top: 50px;"></asp:TextBox>
                    <br />
                    <asp:Label ID="Label1" runat="server" CssClass="clsText10"
                        Style="font-weight: bold; position: absolute; right: 120px; top: 85px;" Text="(Please note: Password values are case sensitive.)"></asp:Label>
                    <asp:Button ID="btnLogin" TabIndex="3" runat="server" Text="Login" CssClass="btn btn-primary"
                        ToolTip="Verify User Name and Password" OnClick="btnLogin_Click" Width="120"
                        Style="position: absolute; right: 180px; top: 180px;"></asp:Button>
                    <div>
                        <asp:Label ID="lblUsername" Text="User Name:&nbsp;" runat="server" Style="position: absolute; right: 310px; top: 5px;"></asp:Label>
                        <br />
                        <asp:Label ID="lblPassword" Text="Password:&nbsp;" runat="server" Style="position: absolute; right: 310px; top: 50px;"></asp:Label>
                        <br />
                        <asp:Label ID="txtError" runat="server" Visible="true" Style="z-index: 100; width: 450px; text-align: right; position: absolute; top: 115px; right: 130px;"></asp:Label>
                    </div>
                </div>
            </div>
        </div>
    </form>
</body>
</html>

使用代码隐藏页面,Login.aspx.cs:

using System;

namespace WebFormTesting
{
    public partial class Login : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            //
        }

        protected void btnLogin_Click(object sender, EventArgs e)
        {
            //
        }
    }
}

0 个答案:

没有答案