I have a classic asp.net page in .net 4.6.1.
It loads 4 MB of data (they want it on one page) and no matter I simplify it, the IIS Worker Process w3wp.exe eats up a Gig of data, and never expires anything or gives any memory back.
Why?
<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %><asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server"><asp:GridView ID="gvSelectionList" runat="server" AutoGenerateColumns="false" CssClass="LPSCriteriaSelection" EnableViewState="False"><Columns><asp:TemplateField HeaderText="SerialNumber"><ItemTemplate><asp:HyperLink ID="hlBSN" Text='<%#GetSerialNumberText(Container.DataItem)%>' NavigateUrl='<%#GetSerialNumberText(Container.DataItem)%>' /></ItemTemplate></asp:TemplateField></Columns></asp:GridView></asp:Content> using System; using System.Collections.Generic; using System.Web.UI; public partial class _Default : Page { protected void Page_Load(object sender, EventArgs e) { if(this.IsPostBack) return; ExpandableSelections items = new ExpandableSelections(); if(items.Count == 0) return; this.gvSelectionList.DataSource = items; this.gvSelectionList.DataBind(); } protected string GetSerialNumberText(object dataItem) { SerialNumberData item = (SerialNumberData)dataItem; return item.SerialNumber; } } public class SerialNumberData { public string SerialNumber { get; set; } public SerialNumberData(string data) { SerialNumber = data; } } public class ExpandableSelections : List<SerialNumberData> { internal ExpandableSelections() { // Emulate database call for (int i = 1; i < 72000; i++) this.Add(new SerialNumberData("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX")); } }