2011-10-26 2 views
0

나는 가지고 asp.net mvc 3 웹 사이트. 로컬 VS 웹 서버 또는 IIS에서 실행하면 ok로 표시됩니다. 그러나 IIS (IIS 7.5 Windows 2008 R2)에서 실행하면 메모리 사용량이 늘면서 메모리 누수가있는 것처럼 보입니다. 어떤 아이디어?IIS 및 IIS 익스프레스 메모리 누수

한 번 더 갱신 : 응용 프로그램에서 같은 코드가 there`s :

SqlConnection conn = new SqlConnection { //creating connection here }; 
conn.Open(); 
SqlCommand command = conn.CreateCommand(); 

try 
{ 
    var reader = command.ExecuteReader(); 
    while (reader.Read()) 
    { 
     //read the data 
    } 
} 
finally 
{ 
    conn.Close(); 
} 

어쩌면 reader.Dispose처럼 뭔가가 있어야한다? 메모리 누수의 원인이 될 수 있습니까?


업데이트 : gc.Collect가 문제를 해결합니다. 그러나 gc.collect를 계속 호출하는 것은 나쁜 생각이므로이 방법을 사용하지 마십시오.

+2

프로필 적용을 했습니까? 이 질문에 귀하가 귀하의 신청서에 관해 귀하가 제공 한 정보를 가지고 우리가 귀하가 행운을 빌어 문제를 찾는 데 도움을 줄 수 있다면 좋겠다고 말할 수 있습니다. 그러나 당신이이 질문을했을 때 나는 그것이 당신이 기대했던 것이 아니라고 생각합니다. 따라서 애플리케이션이 수행중인 작업, 메모리 피크를 관찰 할 때, 애플리케이션이 현재 수행중인 작업에 대해 더 많은 정보를 제공해야합니다 ...? –

+0

맞아, 대린. 나는 무엇을 제공해야하는지 모른다. 내가 어디로 가는지 알면 마치 고칠 것입니다. 메모리 누수가 .net에서 어떻게 발생할 수 있는지 이해할 수 없습니다. 우리는 DB를위한 엔티티 프레임 워크 만 사용합니다. DI는 아무것도 아닙니다. –

답변

3

여기서 가장 좋은 연습은 대괄호를 사용하는 것이지만, 이것은 C#의 훌륭한 기능입니다. 브래킷에 "using"키워드를 사용하면 브래킷 범위를 벗어나면 사용 된 객체가 자동으로 삭제됩니다. 여기에 예제가있다;

// SqlConnection implements IDisposable, will be disposed after bracket is closed 
using(SqlConnection conn = new SqlConnection()) 
{ 
     conn.Open(); 
     // SqlCommand implements IDisposable, will be disposed after bracket is closed 
     using(SqlCommand command = conn.CreateCommand()) 
     { 
     // DataReader implements IDisposable, will be disposed after bracket is closed 
     using(var reader = command.ExecuteReader()) 
     { 
      while (reader.Read()) 
      { 
       // read here. 
      } 
     } 
     } 
} 

"여기에는 연결이 사용 블록의 끝에서 자동으로 닫힙니다."라는 Microsoft 링크가 있습니다. http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.close%28v=VS.85%29.aspx

도움이되기를 바랍니다.

+0

자동으로'Close()'를 호출하는 모든 (3) 구성 요소는 (모두'IDisposable'을 지원해야합니다.) (SqlConnection과 SqlDataReader의 경우) – SliverNinja

+0

해답을 주셔서 감사합니다. 실제로 이미 변경되었습니다. 지금 배포하고 문제인지 알립니다. –

+0

여전히 배포 대기 :-(.All을 업데이트합니다. –