近日,Google開源了Leak Finder,這款工具可以查看JavaScript應用的堆,進而發現內存泄漏。
作為一門垃圾收集語言,JavaScript并不會出現常見的內存泄露情況,特別是像C++等語言中所見到的那種。但如果依舊將內存分配給那些不再使用的對象,那么應用就會出現內存泄漏;如果泄漏情況很嚴重,那么應用的性能就會受到影響,甚至無法執行。
JavaScript中會導致內存泄漏的一種情況就是循環引用,特別是在使用閉包的情況下。當閉包導致內存泄露時,Leak Finder能夠檢測到,然后警告開發者并指出有問題的代碼。該工具會在堆中查找Google Closures的goog.Disposable對象,驗證dispose()方法是否得到調用以及事件監聽器是否得到釋放,因為他們持有著DOM對象的引用,因此會導致內存泄漏。
目前,Leak Finder與Closures搭 配使用,但你也可以通過配置讓其與其他庫搭配使用。Closures是個開源的JavaScript庫,包含了小部件、一個事件框架、用于操縱DOM的工 具、一個單元測試框架、動畫工具等組件,在GMail、GDocs及GMaps等眾多Google服務中得到了廣泛應用。
此外,代碼分析必須得在Chrome 21及更高版本上進行,并且使用遠程調試與開發者工具。
Google此前曾開源了不少JavaScript工具,如Closure Compiler(用于生成緊湊且高性能代碼的工具)、Closure Templates(用于動態生成HTML)、Closure Linter(JavaScript風格檢查器)及Closure Stylesheets(對CSS的一套擴展)。早在去年6月,Google曾發布了GWT(另一個用于構建JavaScript應用的工具集)的一個發布候選版,但其未來還是有些不太明朗,因為Google將很多GWT開發者都轉到了Dart上,后者被看作是“對GWT的一次巨大變革,可以為最終用戶創建出更棒的Web應用,我們對其潛力持樂觀態度”。