Asp.net w3wp正在消耗内存而不将其返回
我在.NET4.6.1中有一个经典的asp.net页面。 它加载4 MB的数据(他们希望它放在一个页面上),无论我如何简化它,IIS工作进程w3wp.exe都会消耗一Gig的数据,并且不会使任何内容过期或返回任何内存。 为什么?Asp.net w3wp正在消耗内存而不将其返回,asp.net,memory,w3wp,Asp.net,Memory,W3wp,我在.NET4.6.1中有一个经典的asp.net页面。 它加载4 MB的数据(他们希望它放在一个页面上),无论我如何简化它,IIS工作进程w3wp.exe都会消耗一Gig的数据,并且不会使任何内容过期或返回任何内存。 为什么? 这是密码 using System; using System.Collections.Generic; using System.Web.UI; public partial class _Default : Page { protected void
这是密码
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"));
}
}
使用系统;
使用System.Collections.Generic;
使用System.Web.UI;
公共部分类\u默认值:第页
{
受保护的无效页面加载(对象发送方、事件参数e)
{
如果(this.IsPostBack)返回;
ExpandableSelections项=新的ExpandableSelections();
如果(items.Count==0)返回;
this.gvSelectionList.DataSource=项目;
这是.gvSelectionList.DataBind();
}
受保护字符串GetSerialNumberText(对象数据项)
{
SerialNumberData项=(SerialNumberData)数据项;
返回item.SerialNumber;
}
}
公共类SerialNumberData
{
公共字符串序列号{get;set;}
public SerialNumberData(字符串数据){SerialNumber=data;}
}
公共类ExpandableSelections:列表
{
内部可扩展选项()
{//模拟数据库调用
对于(int i=1;i<72000;i++)
添加(新序列号数据(“XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX”);
}
}
对Microsoft的调用揭示了在网格本身上调用.Dispose()将使垃圾收集更容易使用,但在本例中,GC线程经常被阻塞(说他们看不到什么--防病毒?),并且,因为我们只需要一个只读的GridView
我发现用一个经典的替换GridView要好得多,在这个调用中,直接用Reponse.write()写出html
这使用的RAM要少得多,并且在后续页面加载时总是会返回它。可能重复的
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"));
}
}