2013-04-09 51 views
0

什麼是用於發現好的工具/技術代碼的哪些方面使用了大量的內存?我已經看到了Linux的提及的valgrind類似的問題,但不是一個Windows應用程序使用Visual Studio 2010開發調試內存佔用率過高

+0

您可能已經考慮過這一點,但Windows應用程序通常可以使用Wine在valgrind中運行。 – 2013-04-09 20:35:06

回答

0

性能嚮導允許資源利用的非常詳細視圖,可以突出單行代碼而導致高內存負載。 要啓動向導,請單擊Visual Studio的「分析」菜單,然後單擊「啓動性能嚮導」。 運行全面檢查可能需要高級版本或更高版本。

+0

嗯,是2012年的一個特點?我在2010年沒有「分析」菜單。 – pauld 2013-04-10 13:52:46

+0

不,2010年也可以使用。但是,您可能有Express或Professional版本的Visual Studio。 – 2013-04-10 13:58:03

+0

是的,我有專業。我想我需要終極的分析選項。 – pauld 2013-04-10 14:10:30

2

還有AQTime,可以給你分配的對象的列表,並在那裏,如果你使用分配探查每一個對象被創建的調用堆棧。

其他選項包括手動插裝與實例計數器代碼爲對象,以你的代碼。這並不理想,但如果分析工具無法運行應用程序(例如,由於內存不足或儀器故障等原因),它尤其有用。

什麼這些工具往往通常不會表現出很明顯的方法是內存碎片 - 如果你有很多的大型物體和大量的小物件被分配在不同的順序頻繁釋放它可以很容易出現。如果可能的話,對這些對象中的某些對象使用池可能是值得的,它可能會對內存使用以及某些情況下的性能產生嚴重影響。

1

VS2010附帶的Microsoft CRT強大支持內置的泄漏檢測功能。可在crtdbg.h頭文件中找到,在此MSDN library article中進行了詳細說明。

如果這是太困難,則Windows調試工具包是非常有用的。 UMHD (User Mode Heap Debugger) utility可以在不更改程序的情況下報告泄漏。

+0

謝謝我會嘗試,看看是否內存泄漏是一個重大問題,但除此之外,我沒有試圖調試內存泄漏,以至於找出哪些代碼區域使用最多的內存。 – pauld 2013-04-10 13:51:23