js內存泄漏

什麼是內存泄漏?

程序運行須要內存。只要程序提出要求,操做系統或者運行時就必須供給內存。

對於持續運行的服務進程,必須及時釋放再也不用到的內存。不然,內存佔用愈來愈高,輕則影響系統性能,重則致使進程崩潰。

垃圾回收機制

所謂的垃圾回收機制,就是經過變量的引用次數來決定是否回收。

若是一個值的引用次數爲0,就表示再也不用到,這個值就會被垃圾回收機制找到回收並釋放

例: var arr = [1,2,3,4]; 
    arr = null; //當變量賦值爲null時,引用次數爲0

內存泄漏識別方法

怎樣能夠觀察到內存泄漏呢?

若是連續五次垃圾回收以後,內存佔用一次比一次大,就有內存泄漏。這就要求實時查看內存佔用

Chrome遊覽器

操做步驟:

1. 打開開發者工具,選擇Performance面板

2. 點擊勾選Memory,點擊錄製按鈕(或Ctrl+E)

3. 在頁面上模擬用戶操做

4. 操做完成後點擊Stop(Ctrl+E)完成錄製
若是內存佔用基本平穩,接近水平,說明不存在內存泄漏。
反之,內存波動差距較大就是內存泄漏

使用Node命令

使用Node提供process.memoryUsage()方法返回一個對象,包含Node進程的內存佔用信息,該對象包含四個字段。ide

1.res(resident set size):全部內存佔用,包括指令區和堆棧

2.heapTotal: "堆"佔用的內存,包括用到的和沒用到的工具

3.heapUsed: 用到的堆的部分,判斷內存泄漏以該字段爲準性能

4.external: V8 引擎內部的C++對象佔用的內存操作系統

相關文章
相關標籤/搜索