2012-02-16 2 views
15

Assembly.Load을 여러 번 호출하면 부작용이 발생합니까?Assembly.Load를 여러 번 호출 할 경우의 부작용

for (int i = 0; i < N; i++) 
{ 
    Assembly.Load(assemblyStrongName); 
    // ....... 
} 

이렇게하면 어셈블리를 한 번로드합니까? 전/후에 AppDomain.CurrentDomain.GetAssemblies()으로 확인했는데 한 번로드 된 것 같습니다 (부작용이 있지만) 부작용이 있습니까?

장기간 실행되는 서버 응용 프로그램 (다시 시작하지 않고 몇 개월 동안 실행)에서 위의 문제가 발생합니까?

+2

조립품을 몇 달/몇 년 동안 계속 사용하는 것이 중요한 시스템이라면 인상적입니다. –

+1

추론 - 메모리 누수를 쫓고 있다면 적절한 도구를 사용하여 소스 코드를보고 누수가 될 수 있다고 추측하는 대신 누출되는 실제 객체를 식별하십시오. –

+0

@Damien_The_Unbeliever : 메모리 누출을 추적하지 않습니다. 필자는 지금까지 수동으로 어셈블리를로드하지 않았습니다. 그래서 (프로그래머) 호기심이었습니다 :). – JohnDoDo

답변

14

어셈블리를 한 번로드합니까?

예. 어셈블리는 현재 AppDomain에로드되고 해당 AppDomain으로 한 번만로드됩니다. 이것을 여러 번 호출하면 기존 어셈블리가 반환됩니다.

+0

부작용이 있습니까? – JohnDoDo

+3

@ JohnDoDo 아니오 - 기존 어셈블리를 반환해야합니다. AppDomain에서 어셈블리를> 한 번로드하는 것은 불가능하며로드되면 언로드되지 않습니다 (AppDomain이 종료 될 때까지) –

관련 문제