2013-03-29 4 views
-1

VB.Net로 작성된 크고 복잡한 Windows Forms 앱이 있습니다. 사용자들은 메모리 문제를 겪고 있으며 JetBrains dotTrace Profiler를 사용하여 몇 가지 문제를 해결합니다.VB.Net 응용 프로그램에서 메모리 누수, 그리드에 의해 열려있는 객체가 있습니까?

내 물건을 열어 놓은 무언가가 아직 있습니다. 나는 Generic.ListInvoiceLineItem 인 '고객'개체를 가지고 있습니다. 이 항목은 기본적으로 그리드 컨트롤 예를 들어 표시 데이터에 대한 읽기 전용 속성의 부하를 가지고 (ConponentOne 적 FlexGrid)에 바인드되고있는 객체이다 : 그것은 못하고처럼

Public Class InvoiceLineItem 
Private _customer as Customer 
Private _charge as Charge 

Sub New(Customer as Customer, Charge as Charge) 
    _customer = Customer 
    _charge = Charge 
End Sub 

Public ReadOnly Property Name as String 
    Return _customer.Name 
End Property 

Public ReadOnly Property ItemName as String 
    Return _charge.Name 
End Property 

Public ReadOnly Property Amount as Decimal 
    Return _charge.Amount 
End Property 
End Class 

이 객체 보인다 FlexGrid에서 릴리스되었습니다.

플렉스 그리드는 기본 폼에서 표시된 하위 폼에 있습니다. 하위 양식이 닫히면 메모리 프로파일 러가 양식이 여전히 참조되어 있음을 보여줍니다. dotTrace에서 "최단 경로"를 클릭하면 아래 경로가 표시됩니다.

Shortest Path

이것은 루트 경로와 고객의 유일한 객체가 될 것으로 보인다.

내 개체 또는 컬렉션간에이 양식에서 진행되는 사용자 지정 이벤트 처리가 없으며 아무 것도 처리되지 않습니다.

추가로 문제를 해결하려면 어떻게해야합니까?

답변

0

문제점을 발견했습니다. FormClosing 이벤트가 다른 곳에서 처리되고 저장되지 않은 데이터에 대해 테스트되었으므로 양식에 대한 참조가 해당 함수에서 유지되고 릴리스되지 않았습니다!

관련 문제