javascript中容易造成記憶體洩漏和使用不善的幾個操作
下面內容都是針對V8引擎的,分別如下:
一.使用delete刪除物件的一個屬性:
使用delete刪除物件的屬性,將會使該物件變慢,會多耗費15倍的內容。
程式碼如下:
[JavaScript] 純文字檢視 複製程式碼var o = { x: 'y' }; //此時o會成一個慢物件 delete o.x; o.x; // var o = { x: 'y' }; o = null; //應該這樣
二.使用閉包:
在閉包中引入閉包外部的變數時,當閉包結束時此物件無法被垃圾回收(GC):
[JavaScript] 純文字檢視 複製程式碼var a = function() { var largeStr = new Array(1000000).join('x'); return function() { return largeStr; } }();
三.DOM洩露:
[JavaScript] 純文字檢視 複製程式碼var select = document.querySelector; var treeRef = select('#tree'); //在COM樹中leafRef是treeFre的一個子結點 var leafRef = select('#leaf'); var body = select('body'); body.removeChild(treeRef); //#tree不能被回收入,因為treeRef還在 //解決方法: treeRef = null; //tree還不能被回收,因為葉子結果leafRef還在 leafRef = null; //現在#tree可以被釋放了
四.Timers計(定)時器洩露:
[JavaScript] 純文字檢視 複製程式碼for (var i = 0; i < 90000; i++) { var buggyObject = { callAgain: function() { var ref = this; var val = setTimeout(function() { ref.callAgain(); }, 90000); } } buggyObject.callAgain(); //雖然你想回收但是timer還在 buggyObject = null; }
五.記憶體除錯:
Chrome自帶的記憶體除錯工具可以很方便地檢視記憶體使用情況和記憶體洩露:
Timeline -> Memory 點選record即可:
演示如下:
相關文章
- 造成記憶體洩漏的操作有哪些?記憶體
- 避免使用Handler而造成的記憶體洩漏記憶體
- JavaScript中的垃圾回收和記憶體洩漏JavaScript記憶體
- Javascript記憶體洩漏JavaScript記憶體
- dealloc不呼叫造成記憶體洩漏記憶體
- 如何避免JavaScript中的記憶體洩漏?JavaScript記憶體
- vue使用中的記憶體洩漏Vue記憶體
- JavaScript之記憶體溢位和記憶體洩漏JavaScript記憶體溢位
- 【記憶體洩漏和記憶體溢位】JavaScript之深入淺出理解記憶體洩漏和記憶體溢位記憶體溢位JavaScript
- JavaScript 記憶體洩漏教程JavaScript記憶體
- 造成記憶體洩漏的異常處理記憶體
- 閉包會造成記憶體洩漏嗎?記憶體
- 如何檢查Javascript中的記憶體洩漏JavaScript記憶體
- 分析記憶體洩漏和goroutine洩漏記憶體Go
- Android中使用Handler為何造成記憶體洩漏?Android記憶體
- JavaScript之記憶體洩漏【四】JavaScript記憶體
- JavaScript 中的記憶體洩漏以及如何處理JavaScript記憶體
- JavaScript中的記憶體洩漏以及如何處理JavaScript記憶體
- JavaScript 程式中記憶體洩漏深入理解JavaScript記憶體
- 【轉】java中的記憶體溢位和記憶體洩漏Java記憶體溢位
- 記憶體洩漏和記憶體溢位記憶體溢位
- 瞭解 JavaScript 應用程式中的記憶體洩漏JavaScript記憶體
- 深入瞭解 JavaScript 記憶體洩漏JavaScript記憶體
- JavaScript記憶體洩漏檢測工具JavaScript記憶體
- [譯] Swift 中的記憶體洩漏Swift記憶體
- Android中的記憶體洩漏Android記憶體
- VCL 中的一個記憶體洩漏 Bug (轉)記憶體
- 記憶體洩漏記憶體
- Swift的ARC和記憶體洩漏Swift記憶體
- 【譯】JavaScript的記憶體管理和 4 種處理記憶體洩漏的方法JavaScript記憶體
- 送一個記憶體洩漏給 2016 的記幾記憶體
- js垃圾回收機制和引起記憶體洩漏的操作JS記憶體
- 【譯】JavaScript的工作原理:記憶體管理和4種常見的記憶體洩漏JavaScript記憶體
- 記憶體洩漏的原因記憶體
- Android中的記憶體洩漏模式Android記憶體模式
- Swift 閉包中的記憶體洩漏Swift記憶體
- 介紹Java中的記憶體洩漏Java記憶體
- 關於java中的記憶體洩漏Java記憶體