2012-11-22 2 views
2

흥미로운 메모리 사용 문제가있는 응용 프로그램이 있습니다. 처음 열면 프로그램은 50-60MB의 메모리를 사용합니다. 이것은 32 비트 시스템에서 일관되게 유지됩니다. 그러나 64 비트 시스템에서는 어떤 방식 으로든 (클릭, 드래그, alt-tabbing 등) 폼을 다시 활성화하면 메모리 사용량이 약 50MB 가량 늘어납니다. 이 프로세스를 여러 번 반복하여 45MB 정도로 다시 설정하면주기가 다시 시작됩니다.VB.Net 메모리 문제

저는 조사를 해본 결과 많은 사람들이 VB가 일반적으로 가비지 콜렉션이 매우 불량하다고 말했습니다. 이는 가비지 콜렉션이 어떤 식 으로든 영향을 줄 수 있다고합니다. 그러나 아직 해결책을 찾지 못했습니다. 응용 프로그램이 활성화 될 때 (32 비트 사용에 표시된 것처럼) 실행되는 이벤트가 없습니다. 응용 프로그램이 사용자의 작업을 기다리고있을뿐입니다.

로드 할 때 시스템은 일부 데이터를 트리 뷰로 가져 오지만 이것은 유일한 외부 연결이며 사용자가 무언가를 변경하고 변경 사항을 저장하는 경우에만 루틴을 다시 시작합니다.

다른 누구도이 이상한 것을 경험 한 적이 있습니까? 그렇다면 누구나 그 문제를 해결할 수 있는지 알고 있습니까? x64 시스템에서만 발생한다는 것이 이상하게 보입니다.

+1

VB (.Net)에는 가비지 수집이 없습니다. GC가있는 CLR입니다. VB, C#, F # 또는 다른 앱을 실행하면 아무런 역할을하지 않습니다. GC는 항상 동일합니다. – igrimpe

+0

페인트 이벤트에 문제가 될 수 있으므로 사용자 지정 컨트롤을 사용하고 있습니까? – John

+0

@ John 대부분의 정보를 표시하기 위해 Janus Grid를 사용하고 있습니다. 필자는 32 비트 버전이 좋지만 64 비트 버전이 아닌 것은 이상하다고 생각했습니다. – Skulmuk

답변

0

프로파일 링 도구를 사용하여 누출의 원인을 찾는 가장 좋은 방법 중 하나는 프로파일 링 도구를 사용하는 것입니다.

http://www.jetbrains.com/profiler/

이 사람들은 일반적으로 충분히 문제의 원인이되는 코드의 영역을 파악하는 것입니다 10 일 무료 평가판을 가지고있다.

0

전혀 문제가되지 않습니다. 주석에서 언급했듯이 64 비트 프로그램은 더 많은 메모리를 사용합니다. 응용 프로그램은 많은 메모리를 사용하지 않으며 잠시 후에 복구됩니다. VB.net에는 "매우 가비지 수집"이 없으며 CLR의 수집기 인 C#과 동일한 수집기를 사용합니다.