2011-05-06 63 views
3

我寫了一個擴展它主要是JS與C++ XPCOM對象。 這是相當複雜和漫長,我相信我有很多的內存泄漏(使用工具就說明泄漏)查找擴展Javascript漏洞

我迷路了.. :(

我無法找到一個簡單的,兩岸向前的工具, 。能告訴我在哪裏我的出現泄漏產生

我做了以下內容: 讀 - https://wiki.mozilla.org/Performance:Leak_Tools 讀取內存泄漏其他各種物品 使用 - 泄漏監測插件和泄漏guague(都顯示了泄漏)

。我怎麼能夠 跟蹤導致我的js代碼泄漏的原因是什麼?有沒有一些工具可以輕鬆做到這一點? 有沒有一篇文章解釋如何做到這一點非常困難? 我是否需要運行FireFox Debug版本?我需要重新構建Firefox嗎?

請直接與我,我完全失去了:(

謝謝! D.

+0

尋找可能被添加到某個東西然後永遠不會被刪除的事件偵聽器,或類似的東西。另一件要注意的是關閉。當你創建一個閉包時,內部函數保存在外部函數中的所有變量中。看起來像這裏有一些很好的討論:http://stackoverflow.com/questions/5245324/closure-memory-leaks – MatrixFrog 2011-05-07 09:07:39

+0

完全用JS編寫的擴展應該不會泄漏,因爲各種垃圾和週期收集器,所以它可能是C++對象使事情變得棘手,特別是如果它有對象成員,因爲這很容易導致一個循環,這會泄漏。 – Neil 2011-05-12 20:25:45

回答

0

Firefox Memory Leak addon應該告訴你,它的內存泄露,無需調試版本。

我的天堂在Firefox插件中不能使用C++,但是您可以使用valgrind或其他內存泄漏檢測器來檢查代碼。Javascript也可能導致內存問題,例如,使用registerListener作爲Firefox窗口而不添加window.addEventListener(「unload」,function (){unregisterListener})會導致一個內存 泄漏。