簡體   English   中英

調試高內存使用率

[英]Debug High Memory Usage

有什么好的工具/技術可以發現代碼的哪些區域正在使用大量內存? 我在linux上看到過類似的問題,其中提到了valgrind,但對於用Visual Studio 2010開發的Windows應用程序卻沒有一個問題。

還有一個AQTime ,它可以為您提供已分配對象的列表,以及使用分配分析器時每個對象創建位置的調用堆棧。

其他選項包括使用對象對象的實例計數器手動檢測代碼。 這不是很理想,但是很有用,特別是在性能分析工具無法運行您的應用程序時(例如,由於內存不足或檢測故障等)。

這些工具通常通常不會以非常明顯的方式顯示出內存碎片-如果您有很多大對象並且很多小對象經常以不同的順序分配和釋放,那么內存碎片很容易發生。 如果可能的話,為其中一些對象使用池可能是值得的,並且在某些情況下可能對內存使用率和性能產生巨大影響。

VS2010附帶的Microsoft CRT對內置的泄漏檢測功能提供了強大的支持。crtdbg.h標頭中提供了此功能,在此MSDN庫文章中對此進行了很好的描述。

如果這太難了,那么Windows調試工具包可能會非常有用。 UMHD(用戶模式堆調試器)實用程序可以報​​告泄漏,而無需更改程序。

通過性能向導,可以非常詳細地查看資源利用率,並且可以突出顯示一行代碼,從而導致較高的內存負載。 要啟動該向導,請單擊Visual Studio的“分析”菜單,然后單擊“啟動性能向導”。 要進行全面檢查,可能需要高級版本或更高版本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM