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