日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

【读书笔记】《深入浅出nodejs》第五章 内存控制

發(fā)布時(shí)間:2023/12/2 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【读书笔记】《深入浅出nodejs》第五章 内存控制 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

海量請(qǐng)求+長(zhǎng)時(shí)間運(yùn)行 -> 內(nèi)存控制 -> 一切資源高效循環(huán)利用

1. V8的垃圾回收機(jī)制與內(nèi)存限制

  在Node中通過(guò)JavaScript使用內(nèi)存時(shí),只能使用部分內(nèi)存(64位系統(tǒng)下約1.4GB,32位系統(tǒng)下約為0.7GB)。

  在V8中,所有的JavaScript對(duì)象都是通過(guò)堆來(lái)進(jìn)行分配的,當(dāng)申請(qǐng)的堆空閑內(nèi)存不夠分配新的對(duì)象,將繼續(xù)申請(qǐng)堆內(nèi)存,直到堆得大小超過(guò)V8的限制為止。

  為什么V8要限制堆得大小?

    -> (1)V8最初為瀏覽器設(shè)計(jì),不太可能遇到用大量?jī)?nèi)存的場(chǎng)景。

    -> (2)V8的垃圾回收機(jī)制限制。(1.5GB的垃圾回收堆內(nèi)存,需要大約50毫秒以上,這使得應(yīng)用性能和響應(yīng)能力會(huì)直線下降)

  突破V8限制:

    -> $node --max-old-space-size = 1700 (單位MB) or?

    -> $node --max-new-space-size =1024 (單位KB)

  V8的垃圾回收機(jī)制 ---- 分代式垃圾回收機(jī)制

  查看垃圾回收機(jī)制 ---- $node --trace_gc -e "var a = [];for (var i=0; i<1000000; i++) a.push(new Array(100));" > gc.log

2. 高效使用內(nèi)存

  (1)了解作用域

  (2)了解閉包

  無(wú)法立即回收的內(nèi)存有:

    ->閉包

    ->全局變量引用

  因此,要小心此類變量的無(wú)限制添加

3. 內(nèi)存指標(biāo)

  --會(huì)存在一些我們認(rèn)為會(huì)回收但是卻沒(méi)有被回收的對(duì)象,這會(huì)導(dǎo)致內(nèi)存占用無(wú)限增長(zhǎng)。一旦增長(zhǎng)達(dá)到V8內(nèi)存限制,將會(huì)得到內(nèi)存溢出錯(cuò)誤,進(jìn)而導(dǎo)致進(jìn)程退出。

  (1)查看內(nèi)存使用情況 -> $node >process.memoryUsage() {

      {

       rss (resident set size 進(jìn)程的常駐內(nèi)存部分):132852672, (除此外,內(nèi)存其余部分在交換區(qū)(swap)或文件系統(tǒng)(filesystem)中)

       ? heapTotal(堆中總共申請(qǐng)的內(nèi)存量) :6131200,

       ? heapUsed(目前堆中使用中的內(nèi)存量):2757120,

      }

  (2)查看系統(tǒng)內(nèi)存占用

      -> $node >os.totalmem() ?“系統(tǒng)的總內(nèi)存”

      -> $node >os.freemem() “系統(tǒng)的閑置內(nèi)存”

  (3)堆外內(nèi)存

  受V8的垃圾回收限制的主要是V8的堆內(nèi)存。

4. 內(nèi)存泄漏

  造成內(nèi)存泄漏的原因:

    (1)緩存

    (2)隊(duì)列消費(fèi)不及時(shí)

    (3)作用域未釋放

5. 內(nèi)存泄漏排查

  使用常見工具:

    (1)node-heapdump

    (2)node-memwatch

6. 大內(nèi)存應(yīng)用

?

轉(zhuǎn)載于:https://www.cnblogs.com/libinfs/p/5922447.html

總結(jié)

以上是生活随笔為你收集整理的【读书笔记】《深入浅出nodejs》第五章 内存控制的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。