我正在開發一個使用XUL的Firefox附加組件,並且我想測量和剖析我的擴展內存使用情況。
我該怎麼做?並檢查哪個函數佔用的內存最多,以及我的擴展添加到firefox的內存使用量有多少?
如何測量Firefox附加內存使用情況
7
A
回答
6
您無法測量單個函數的影響,Firefox中的內存管理在此級別不起作用 - 它適用於隔離專區。如果您的擴展程序有自己的窗口,那麼您將能夠在about:memory?verbose
(單擊「最小化內存使用率」,否則您可能會看到那些將被垃圾收集的對象)下看到此窗口的隔離區。如果您的擴展程序的代碼在瀏覽器窗口的上下文中運行,那麼您通常不幸運 - 您將無法將其與其他正在運行的腳本區分開來。這與XPCOM組件和JavaScript模塊一樣 - 它們都被加載到「[System Principal]」隔離區中。
但是,如何讓腳本與大隔間分離,您可以做些什麼:使用沙箱,沙箱始終會有自己的隔間。例如,在一個瀏覽器窗口,你會做這樣的事情:
Components.utils.import("resource://gre/modules/Services.jsm");
var mySandbox = Components.utils.Sandbox(window,
{sandboxName: "myExtension/browserScript.js"});
mySandbox.window = window; // Expose window variable to scripts in the sandbox
Services.scriptloader.loadSubScript("chrome://myextension/content/browserScript.js",
mySandbox);
mySandbox.init(); // Call function init() of the script in the sandbox
結果,將about:memory?verbose
下顯示一個名爲myExtension/browserScript.js
隔間,你將能看到多少內存這個腳本(與對象一起它創建等)完全採用。需要注意的事項:
- 沙箱中的腳本將無法訪問「外部」中的變量。你必須明確地將這些變量設置爲沙盒的屬性(就像我在例子中用
window
變量所做的那樣)。 - 隔間並不便宜,並且在隔間之間傳遞物體也不便宜。因此,爲每個功能創建一個分區將是一個壞主意,因爲涉及到開銷。
更新:火狐的13件事情發生了變化。例如this extension會向您顯示當前內存中的所有對象。離舒適還有很遠的距離,整個畫面也不是微不足道的 - 但它可以讓您在低於隔層的層面上更加細化。
相關問題
- 1. 如何測量內存使用情況
- 2. 如何測量代碼的內存使用情況?
- 3. 如何測量數據結構的內存使用情況?
- 4. Java測量內存使用情況的方法如何?
- 5. 如何測量JavaScript對象的內存使用情況
- 6. 如何測量F#代碼的CPU和內存使用情況?
- 7. 如何測量Linux中OpenMP代碼的內存使用情況?
- 8. 如何測量Java中的峯值堆內存使用情況?
- 9. 如何測量python中對象的內存使用情況?
- 10. 如何在不分配內存的情況下測量.net應用程序的內存使用情況?
- 11. firefox高內存(RAM)使用情況,如何用javascript免費?
- 12. 使用process.WorkingSet64測量內存使用情況的異常
- 13. 如何測量硒的使用情況?
- 14. Linux:如何測量進程內線程的內存使用情況?
- 15. 如何測量使用Werkzeug/Flask時Web請求的內存使用情況?
- 16. gdb巨量內存使用情況
- 17. 測量分佈式應用程序的內存使用情況
- 18. 用於測量CPU和內存使用情況的RRD
- 19. 測量ios應用程序的內存使用情況
- 20. 如何分析內存使用情況?
- 21. Android的每個GC之後的內存使用情況測量
- 22. 在Cocoa/Objectice-C中測量進程的內存使用情況?
- 23. Powershell。 C#測量PowerShell主機內存使用情況
- 24. 測量某個數據結構的內存使用情況
- 25. 在Apache/Mysql服務器上測量內存使用情況
- 26. 測量功能cpp中的內存使用情況
- 27. 測量C#項目中的內存使用情況
- 28. 測量Java程序內存使用情況的最佳方法?
- 29. 測量進程CPU和內存使用情況
- 30. 如何測量Rack或Sinatra應用程序的內存使用情況?
不知道它是否可以幫助你...但是你可以在地址欄中輸入「about:memory」,但我不認爲它會像你希望的那樣精確。 – 2012-02-06 18:20:12
about:內存根本沒有幫助,爲了理解那裏的內容,我需要學習如何使用firefox內存......這太多了。 – Yosi 2012-02-06 18:31:28