Visual Basic 2005 또는 클래스의 인스턴스를 만들고 Visual Basic 2008 응용 프로그램을 실행할 때 메모리 사용량이 증가합니다.

기술 자료 번역 기술 자료 번역
기술 자료: 919481 - 이 문서가 적용되는 제품 보기.
모두 확대 | 모두 축소

이 페이지에서

현상

영문자와 숫자가 조합된 PIN 코드가 설정된 Bluetooth 장치가 있다면:
  • Visual Studio 2005에서 또는 Visual Studio 2008의 Visual Basic 응용 프로그램을 만듭니다.
  • Visual Basic 응용 프로그램 클래스가 들어 있습니다.
  • 이벤트 클래스가 들어 있습니다.
  • Visual Basic 응용 프로그램에서 클래스의 인스턴스를 만듭니다.
  • 디버그 모드에서 Visual Basic 응용 프로그램을 컴파일합니다.
이 시나리오에서는 Visual Basic 응용 프로그램을 실행할 때 메모리 사용량이 증가합니다.

참고다음 조건에 해당하는 경우 이 현상이 가능성이 있습니다.
  • Visual Basic 응용 프로그램은 오랜 시간 동안 계속 실행됩니다.
  • Visual Basic 응용 프로그램에서 이벤트를 포함하는 클래스의 인스턴스를 만듭니다. 충분한 시간을 인스턴스를 만들 경우, 응용 프로그램이 결국, OutOfMemoryException 또는 ""메모리 부족 실패합니다 오류가 발생했습니다. 예를 들어, Visual Basic 응용 프로그램 클래스의 여러 인스턴스를 만드는 루프가 포함되어 있습니다.

원인

편집하며 계속하기 기능은 Visual Studio 2005에서 또는 Visual Studio 2008의 디버깅 만들어진 개체에 대한 약한 참조를 목록을 유지 관리하는 때문에 이 문제가 발생합니다. 만든 개체가 이벤트를 포함하는 클래스를 경우 프로그램 기간 이러한 약한 참조는 유지 관리합니다. 이 문제는 메모리 사용량이 증가합니다.

해결 방법

이 문제를 해결하려면 다음 방법 중 하나를 사용하십시오.

방법 1: Visual Basic 응용 프로그램 다시 시작

Visual Basic 응용 프로그램을 다시 시작할 수 있습니다. 이렇게 하면 해당 메모리가 해제됩니다.

방법 2: 릴리스 모드에서 Visual Basic 응용 프로그램 컴파일

릴리스 모드에서 Visual Basic 응용 프로그램을 컴파일할 수 있습니다. 릴리스 모드에서 컴파일된 Visual Basic 응용 프로그램을 실행할 때 이벤트를 포함하는 클래스의 인스턴스를 만들 때 메모리 사용을 늘어나지 않습니다.

추가 정보

문제를 재현하는 방법

  1. Visual Studio 2005 또는 Visual Studio 2008 시작하십시오.
  2. 파일 메뉴에서 새로 만들기를 가리킨 다음 프로젝트 를 클릭하십시오.
  3. 프로젝트 형식Visual Basic 을 클릭하십시오. Visual Basic 프로젝트 형식을 볼 수 없으면 다른 언어 를 확장한 다음 Visual Basic 을 클릭하십시오.
  4. 템플릿콘솔 응용 프로그램 을 누릅니다.
  5. 프로젝트 이름을 입력한 다음 확인 을 누릅니다.
  6. 코드 창에서 모든 코드를 다음 코드로 바꿉니다.
    Module Module1
    
      Private Sub CreateClassWithEvent()
        Dim TestClass As New CLeak
      End Sub
    
      Sub Main()               
        ' This loop infinitely creates a class that contains an event.
        While True
          CreateClassWithEvent()
          System.GC.Collect()
          System.GC.WaitForPendingFinalizers()
          Threading.Thread.Sleep(50)
        End While
      End Sub
    
    End Module
    
    Class CLeak
      Event myEvent()
    End Class
    
  7. 디버그 메뉴에서 디버깅하지 를 클릭하십시오.

속성

기술 자료: 919481 - 마지막 검토: 2009년 3월 27일 금요일 - 수정: 2.0
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Visual Studio 2008 Standard Edition
  • Microsoft Visual Studio 2008 Professional Edition
  • Microsoft Visual Studio 2005 Team System Architect Edition
  • Microsoft Visual Studio 2005 Team System Developer Edition
  • Microsoft Visual Studio 2005 Team System Test Edition
  • Microsoft Visual Studio 2005 Team System Team Foundation:
  • Microsoft Visual Studio 2005 Standard Edition
  • Microsoft Visual Studio 2005 Professional Edition
  • Microsoft Visual Studio 2005 Express Edition
  • Microsoft Visual Basic 2005
키워드:?
kbmt kbtshoot kbprb KB919481 KbMtko
기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com