양식 중 하나에 IE 컨트롤이 있고 응용 프로그램이 처음에 메모리 크기가 약 9MB로 시작되는 VB.NET 응용 프로그램이 있지만 IE 양식이 시작되면 소비되는 메모리가 27MB로 증가하고, 해당 양식이 닫히면 메모리가 3-4MB 만 감소하므로 IEFrame에 할당 된 메모리가 자동으로 할당 해제되지 않는 이유는 무엇입니까? 이 문제를 해결하기위한 해결 방법이 있습니까? 가능한 경우 별도의 프로세스로 양식을 시작하는 것이 도움이됩니다.VB.NET 양식을 별도의 프로세스로 시작하십시오.
답변
문제가있는 경우 해당 양식을 별도의 응용 프로그램에 두지 않는 이유는 무엇입니까? 두 앱간에 어떤 데이터라도 전달할 수있는 방법은 많습니다.
IE 컨트롤이있는 양식 만 별도의 응용 프로그램으로 만들면 응용 프로그램의 설치가 번거로울 수 있으므로 필자가 의존하는 양식이 외부 요인인지 실제로 확인해야합니다. – Kushal
설치가 까다로운 이유는 무엇입니까? 모든 .NET 라이브러리가 이미 설치되었을 것입니다. 그것은 같은 디렉토리에 복사 된 또 다른 EXE입니다. 도움이 될만한 다른 트릭이있을 수 있지만, 실제로 별도의 프로세스에서 무언가를 실행하고 싶다면 그렇게하는 것이 가장 쉬운 방법입니다. –
별도의 응용 프로그램이 .NET 언어로 작성된 경우에도 동일한 "문제"가 발생합니다. 가비지 수집은 사용하지 않는 메모리를 즉시 회수하지 않습니다. 그건 의도적으로입니다. 이를 두 개의 개별 응용 프로그램으로 분할하면 개발 및 설치시 불필요한 복잡성이 발생합니다. –
양식을 올바르게 처리하려면 가비지 수집기가 결국 메모리를 확보해야합니다. 별도의 프로세스에서 IE 컨트롤을 실행하면 안됩니다. 그러나 IE 7을 사용하는 경우 메모리 누수에 대해서는 this question을 읽어보십시오.
닫기 단추를 사용하여 양식을 정상적으로 닫았으며 IE 9을 사용하고 있습니다. – Kushal
양식이 닫을 때 처리되지 않는 경우 두 가지 조건이 있습니다 : (1) 그것이 다중 문서 인터페이스 (MDI) 응용 프로그램의 일부인 경우, 양식이 보이지 않습니다. (2) ShowDialog를 사용하여 양식을 표시했습니다. 이 경우 양식에서 수동으로 Dispose를 호출해야합니다. –
좋아요, 저는 ShowDialog를 사용하여 폼을 호출했고 자식 폼이 모달로 시작되었지만 여전히 메모리 소비가 지속될 때 부모 폼의 포커스에서 수동으로 Dispose 메서드를 호출했습니다. – Kushal
아직 할당 된 메모리는 전혀 문제가되지 않을 수 있습니다. 컴퓨터에 사용 가능한 메모리가 충분하면 .NET 가비지 수집기가 실행되어 정리되지 않습니다. 당신이 메모리를 필요로 할 때 만 GC는에 시작된다
당신이 당신이 다음을 수행 할 수있는 누수가 있는지 확인하려면 :.
- 당신은 어떤 방법으로 형식에 대한 참조가 없는지 확인 .
- 전화 GC.Collect를() 메모리가 여전히 을 주장하는 경우
- 참조
최종 빌드에서하는 GC.Collect()를 넣지 마십시오; 당신이 유령을 사냥하고 있지 않은지 확인하는 것입니다.
'GC.Collect()'를 사용했지만 메모리가 여전히 요구되지 않았습니다. – Kushal
- 1. 파이썬을 별도의 프로세스로 실행하십시오.
- 2. Java 응용 프로그램을 별도의 프로세스로 실행
- 3. VB.Net 양식을 바탕
- 4. C#에서 별도의 프로세스로 Flex 어플리케이션 ActiveX/ExternalInterface에 액세스 하시겠습니까?
- 5. WPF에서 별도의 프로세스로 일부 컨트롤을 분리 할 수 있습니까?
- 6. Windows 배치 파일을 Java에서 별도의 프로세스로 실행하려면 어떻게해야합니까?
- 7. 별도의 스레드에서 로그인 양식을 최상위로 만들려면 어떻게해야합니까?
- 8. 하위 프로세스로 프로세스를 복구합니다 .Popen?
- 9. 나는 ToolStrip의 메뉴와 vb.net 양식을 ManagerRenderMode
- 10. 다른 프로젝트에서 양식을 가져 오는 VB.NET 2008?
- 11. 쉘에서 서버 이맥스를 시작하십시오.
- 12. 서비스 모니터를 만들고 프로세스를 다시 시작하십시오.
- 13. 파이썬으로 ssh를 통해 원격 기계에서 스크립트를 시작하십시오.
- 14. 다른 프로세스로 서비스 실행
- 15. 웹 페이지를 프로세스로 업데이트하십시오.
- 16. 다른 실행중인 프로세스로 전환
- 17. VB.NET 멀티 스레딩. 별도의 클래스 파일에있는 클래스의 UI 컨트롤에서 호출하기
- 18. VB.NET - 폼이 걸리지 않게하기 위해 별도의 스레드에서 작업하기
- 19. 표를 머리글과 동일한 줄에서 시작하십시오.
- 20. Orbeon Form Builder 양식을 별도의 응용 프로그램에서 사용할 수 있습니까?
- 21. 언어 요구 사항으로 인해 별도의 스레드에서 양식을 여는 방법
- 22. 프로그래밍 방식으로 UserControlTestContainer.exe를 시작하십시오.
- 23. ItemizedOverlay 클래스의 액티비티를 시작하십시오.
- 24. 백그라운드 작업자를 다시 시작하십시오.
- 25. Java에서 타이머를 시작하십시오.
- 26. Nant 코드에서 시작하십시오
- 27. 이메일에서 Android 의도를 시작하십시오.
- 28. GAE에서 django와 세션을 시작하십시오
- 29. Lua를 통해 Vim을 시작하십시오.
- 30. 심비안 개발을위한 튜토리얼을 시작하십시오
** 가비지 수집 **이라고합니다. 메모리를 즉시 할당 해제하는 것은 아닙니다. 이것을 별도의 프로세스로 시작하는 것은 아무 것도 고쳐 내지 않을 것입니다. 나는 최근에 이것에 많이 링크되어있는 것처럼 느껴지지만, [나는 이미 당신의 문제를 여기에서 충분히 논의했다.] (http://stackoverflow.com/questions/5191897/how-to-release-the-occupied-memory/5192350 # 5192350). –
@Cody Grey : 가비지 컬렉션에 대한 심층적 인 정보를 제공해 주셔서 감사합니다. 가비지 수집에 대한 개요를 이미 알고 있었기 때문에. – Kushal