ASP.NET 응용 프로그램에서 실제로 메모리 문제가 발생했습니다. 마치 페이지가로드 될 때마다 페이지의 이전 이전 인스턴스가 메모리에서 제거되지 않는 것처럼 보입니다. F5 키를 10 번 누르면 메모리가 인스턴스에 10-20MB를 추가합니다. 스트레스 및 성능 테스트를하는 동안 메모리가 최대치가되고 웹 서버가 다운됩니다 ...ASP.NET 페이지가 메모리에서 제거되지 않았습니다.
ANTS 메모리 프로파일 링을 실행하고 페이지가로드 될 때마다 이전 인스턴스가 메모리에 남아 있음을 확인했습니다. 모든 ASP.NET 웹 페이지는 마스터 페이지도 사용합니다. 내가 페이지를
http://oi51.tinypic.com/21msy2g.jpg
는 개미 프로파일 결과를 보면 다음 10 배, 페이지가 존재하는 웹의 10 개 인스턴스뿐만 아니라 마스터 페이지의 10 개 인스턴스를 ...로드하는 경우 다시 말하지만, 당신은 볼 수 있습니다 모든 페이지를 새로 고침하면 약 320Kb가 메모리에 추가되고, 웹 페이지뿐이기 때문에 마스터 페이지를 고려하지 않습니다. 내 응용 프로그램은 응용 프로그램을 캡처하는 생명 보험 응용 프로그램이므로 30-40 페이지 정도 진행됩니다. 왜 이것이 이것이 방대한 프로빙인지를 알 수 있습니다.페이지를 메모리에 보관하는 방법을 찾는 방법은 무엇입니까? \
모든 내 페이지는 서비스 등록을 위해 Unity 및 Dependency Injection을 사용합니다 ... page_onUnload 중에이 서비스를 등록 해제해야하는지 잘 모르겠습니다.
편집
좋아는, 나는 아래로 문제를 추적 관리했습니다. 페이지가 삭제되지 않은 이유는 (GCollected) 페이지를 언로드하는 동안 등록되어 있지만 아직 등록되지 않은 Unity 서비스 인스턴스 때문입니다. 내 페이지에 유니티를 사용하고 방법이다 : 나는 공용 속성을 통해 서비스를 주입
#region Services
[Dependency]
public ReviewReportService SummaryService { get; set; }
[Dependency]
public Portfolios.PortfolioService PortfolioService { get; set; }
#endregion
다음 페이지 초기화, 나는 유니티 증강 수행 분명히 할 때 이제
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
ApplicationContainer.BuildUp(this.Context, this);
}
을 페이지는 정상적인 라이프 사이클을 거치며 Unload를 호출합니다. 의존성 삽입 참조로 인해 언로드 할 수 없습니다 ... 서비스 등록 해제 방법 (SummaryService, PortfolioService)
OnUnload에서 다음 호출을 시도했지만 아무것도 수행하지 않습니다.
ApplicationContainer.GetContainer (Context) .Tardown (this);
페이지에 대한 정적 참조가 있는지 어떻게 결정합니까? 어떤 객체가 객체를 참조하는지 식별하는 방법은 무엇입니까? – FaNIX