内存泄漏工具
上期鏈接:http://www.csdn.net/expert/topic/126/126730.shtm
上期所提到的工具:
一、BoundChecker ? 6.01 ? 大家公認不錯的東東
下載地址:263.csdn.net
二、Mutek ? BugTrapper ? 3.0 ? 據(jù)說不錯,但小生不會用,用過者能發(fā)表點心得嗎???
下載地址:www.driverdevelop.com的相關(guān)下載
三、Rational ? Purify ? 據(jù)說不錯,但小生不會用,用過者能發(fā)表點心得嗎???
教育網(wǎng)下載地址:ftp.xjtu.edu.cn下載ration ? Enterprise ? suite ? 2001
四、UMDH ? Tools ? Microsoft推出的,是DOS上的工具,很難用,但小生不會用,用過者能發(fā)表點心得嗎???
下載地址:http://download.microsoft.com/download/win2000platform/Utility/1/NT5/EN-US/UMDHTOOLS.exe
?
轉(zhuǎn)載
內(nèi)存泄漏檢測工具(轉(zhuǎn)載)
內(nèi)存泄漏檢測工具2007年08月08日
1.???? ccmalloc - Linux和 Solaris下對 C和 C++程序的簡單的使用內(nèi)存泄漏和 malloc調(diào)試庫。
2.???? Dmalloc - Debug Malloc Library.
3.???? Electric Fence - Linux分發(fā)版中由 Bruce Perens編寫的 malloc()調(diào)試庫。
4.???? Leaky - Linux下檢測內(nèi)存泄漏的程序。
5.???? LeakTracer - Linux、 Solaris和 HP-UX下跟蹤和分析 C++程序中的內(nèi)存泄漏。
6.???? MEMWATCH -由 Johan Lindh編寫,是一個開放源代碼 C語言內(nèi)存錯誤檢測工具,主要是通過 gcc的 precessor來進行。
7.???? Valgrind - Debugging and profiling Linux programs, aiming at programs written in C and C++.
8.???? KCachegrind - A visualization tool for the profiling data generated by Cachegrind and Calltree .
9.???? Leak Monitor -一個 Firefox擴展,能找出跟 Firefox相關(guān)的泄漏類型。
10.?IE Leak Detector (Drip/IE Sieve) - Drip和 IE Sieve leak detectors幫助網(wǎng)頁開發(fā)員提升動態(tài)網(wǎng)頁性能通過報告可避免的因為 IE局限的內(nèi)存泄漏。
11.?Windows Leaks Detector -探測任何 Win32應用程序中的任何資源泄漏 (內(nèi)存,句柄等 ),基于 Win API調(diào)用鉤子。
12.?SAP Memory Analyzer -是一款開源的 JAVA內(nèi)存分析軟件,可用于輔助查找 JAVA程序的內(nèi)存泄漏,能容易找到大塊內(nèi)存并驗證誰在一直占用它,它是基于 Eclipse RCP(Rich Client Platform),可以下載 RCP的獨立版本或者 Eclipse的插件。
13.?DTrace -即動態(tài)跟蹤 Dynamic Tracing,是一款開源軟件,能在 Unix類似平臺運行,用戶能夠動態(tài)檢測操作系統(tǒng)內(nèi)核和用戶進程,以更精確地掌握系統(tǒng)的資源使用狀況,提高系統(tǒng)性能,減少支持成本,并進行有效的調(diào)節(jié)。
14.?IBM Rational PurifyPlus -幫助開發(fā)人員查明 C/C++、托管 .NET、 Java和 VB6代碼中的性能和可靠性錯誤。 PurifyPlus 將內(nèi)存錯誤和泄漏檢測、應用程序性能描述、代碼覆蓋分析等功能組合在一個單一、完整的工具包中。
15.?Parasoft Insure++ -針對 C/C++應用的運行時錯誤自動檢測工具,它能夠自動監(jiān)測 C/C++程序,發(fā)現(xiàn)其中存在著的內(nèi)存破壞、內(nèi)存泄漏、指針錯誤和 I/O等錯誤。并通過使用一系列獨特的技術(shù)( SCI技術(shù)和變異測試等),徹底的檢查和測試我們的代碼,精確定位錯誤的準確位置并給出詳細的診斷信息。能作為 Microsoft Visual C++的一個插件運行。
16.?Compuware DevPartner for Visual C++ BoundsChecker Suite -為 C++開發(fā)者設計的運行錯誤檢測和調(diào)試工具軟件。作為 Microsoft Visual Studio和 C++ 6.0的一個插件運行。
17.?Electric Software GlowCode -包括內(nèi)存泄漏檢查, code profiler,函數(shù)調(diào)用跟蹤等功能。給 C++和 .Net開發(fā)者提供完整的錯誤診斷,和運行時性能分析工具包。
18.?Compuware DevPartner Java Edition -包含 Java內(nèi)存檢測 ,代碼覆蓋率測試 ,代碼性能測試 ,線程死鎖 ,分布式應用等幾大功能模塊。
19.?Quest JProbe -分析 Java的內(nèi)存泄漏。
20.?ej-technologies?JProfiler -一個全功能的 Java剖析工具,專用于分析 J2SE和 J2EE應用程序。它把 CPU、執(zhí)行緒和內(nèi)存的剖析組合在一個強大的應用中。 JProfiler可提供許多 IDE整合和應用服務器整合用途。 JProfiler直覺式的 GUI讓你可以找到效能瓶頸、抓出內(nèi)存泄漏、并解決執(zhí)行緒的問題。 4.3.2注冊碼: A-G666#76114F-1olm9mv1i5uuly#0126
21.?BEA JRockit -用來診斷 Java內(nèi)存泄漏并指出根本原因,專門針對 Intel平臺并得到優(yōu)化,能在 Intel硬件上獲得最高的性能。
22.?SciTech Software AB .NET Memory Profiler - 找到內(nèi)存泄漏并優(yōu)化內(nèi)存使用針對 C#, VB.Net,或其它 .Net程序。
23.?YourKit .NET & Java Profiler -業(yè)界領(lǐng)先的 Java和 .NET程序性能分析工具。
24.?AutomatedQA AQTime - AutomatedQA的獲獎產(chǎn)品 performance profiling和 memory debugging工具集的下一代替換產(chǎn)品,支持 Microsoft, Borland, Intel, Compaq 和 GNU編譯器。可以為 .NET和 Windows程序生成全面細致的報告,從而幫助您輕松隔離并排除代碼中含有的性能問題和內(nèi)存 /資源泄露問題。支持 .Net 1.0,1.1,2.0,3.0和 Windows 32/64位應用程序。
25. JavaScript Memory Leak Detector -微軟全球產(chǎn)品開發(fā)歐洲團隊 (Global Product Development- Europe team, GPDE) 發(fā)布的一款調(diào)試工具,用來探測 JavaScript 代碼中的內(nèi)存泄漏,運行為 IE 系列的一個插件。
?
?
附錄:內(nèi)存泄漏的發(fā)生方式
1.???? 常發(fā)性內(nèi)存泄漏。發(fā)生內(nèi)存泄漏的代碼會被多次執(zhí)行到,每次被執(zhí)行的時候都會導致一塊內(nèi)存泄漏。
2.???? 偶發(fā)性內(nèi)存泄漏。發(fā)生內(nèi)存泄漏的代碼只有在某些特定環(huán)境或操作過程下才會發(fā)生。常發(fā)性和偶發(fā)性是相對的。對于特定的環(huán)境,偶發(fā)性的也許就變成了常發(fā)性的。所以測試環(huán)境和測試方法對檢測內(nèi)存泄漏至關(guān)重要。
3.???? 一次性內(nèi)存泄漏。發(fā)生內(nèi)存泄漏的代碼只會被執(zhí)行一次,或者由于算法上的缺陷,導致總會有一塊且僅有一塊內(nèi)存發(fā)生泄漏。
4.???? 隱 式內(nèi)存泄漏。程序在運行過程中不停的分配內(nèi)存,但是直到結(jié)束的時候才釋放內(nèi)存。嚴格的說這里并沒有發(fā)生內(nèi)存泄漏,因為最終程序釋放了所有申請的內(nèi)存。但是 對于一個服務器程序,需要運行幾天,幾周甚至幾個月,不及時釋放內(nèi)存也可能導致最終耗盡系統(tǒng)的所有內(nèi)存。所以,我們稱這類內(nèi)存泄漏為隱式內(nèi)存泄漏。
?
什么是系統(tǒng)資源?
當應用程序在 Windows 中運行時, Windows 必須實時 " 跟蹤 " 該應用程序的運行,并保留與之相關(guān)的許多信息,如按鈕、光標、菜單的位置和位圖、窗口的狀況等,這些信息由 Windows 保留在一種叫堆的內(nèi)存塊中,堆的英文為 Heap 。簡單地說,堆是采用特殊機制管理的內(nèi)存塊。由 Windows 的一個系統(tǒng)內(nèi)核 User.exe 管理的堆叫做 User 資源堆( User Resource Heap ),由另一個系統(tǒng)內(nèi)核 Gdi.exe 管理的堆叫做 GDI 資源堆( Graphical Device Interface Resource Heap ,簡稱 GDI Resource Heap ), User 資源堆和 GDI 資源堆合稱為系統(tǒng)資源堆( System Resource Heap ),習慣上就把它們叫做系統(tǒng)資源( System Resource )。
微軟將 Windows 的系統(tǒng)資源(堆)分為五個堆,其中 User 資源堆為三個,而 GDI 資源堆為兩個。
三個 User 資源堆分別是: 16 位的用戶堆( User Heap , 64KB ); 32 位的窗口堆( Windows Heap , 2MB ); 32 位的用戶菜單堆( User Menu Heap , 2MB )。
兩個 GDI 資源堆分別是: 16 位的 GDI 堆( GDI Heap , 64KB ); 32 位的 GDI 堆( GDI , 2MB )。
從這里的系統(tǒng)資源分類和大小我們應該明白,不管 CPU 是 P4 還是 486 ,內(nèi)存是 8M 還是 1G ,所有 Windows 的用戶都擁有同樣大小的系統(tǒng)資源(堆),用戶不能自已增加或減少系統(tǒng)資源的大小,這是由操作系統(tǒng)決定的,與硬件檔次沒有任何關(guān)系。
Windows 的 User 資源堆和 GDI 資源堆的可用( Free )空間稱為可用 User 資源和可用 GDI 資源, Windows 中以百分數(shù)表示它們,用戶可以選擇 " 開始 / 附件 / 系統(tǒng)工具 / 系統(tǒng)信息 " ,來實時查看它們的大小。
總結(jié)
- 上一篇: 局域网共享文件夹设置
- 下一篇: 常见的一些功能测试用例