s運行的宿主環境不同,相應的對內存治理的要求也不一樣,當宿主環境是瀏覽器時,由于網頁的運行時間短,且只運行在用戶的機器上(相當于分布式),即使內存使用過多或者存在一定的內存泄漏,也并不會對終端用戶產生太大的影響。當宿主環境編程服務器(Node)時,情況就大不相同了,本身代碼運行在固定的幾臺機器(集中式)上,而且運行的時間是長時間運行,一旦內存治理不好出現了內存膨脹甚至是內存泄漏的情況的話,就會出現服務器端響應時間變長甚至是服務crash的情況。
創新互聯公司堅持“要么做到,要么別承諾”的工作理念,服務領域包括:網站建設、網站設計、企業官網、英文網站、手機端網站、網站推廣等服務,滿足客戶于互聯網時代的北海街道網站設計、移動媒體設計的需求,幫助企業找到有效的互聯網解決方案。努力成為您成熟可靠的網絡建設合作伙伴!Nodejs是基于V8構建的,所以在Node中使用的JavaScript對象基本上(Buffer就不是)都是通過V8來進行分配和管理的。V8在占用內存大小上做了限制(64位操作系統,單個Node進程可使用的大堆內存大小約為1.5GB)。即使服務器的內存很大,但是由于V8的這種限制,導致Node無法充分利用服務器的資源。即便如此,為什么V8要做這樣的限制呢?做這樣限制的原因其實是與垃圾回收機制相關,以1.5GB的垃圾回收堆內存堆為例,V8做一次小的垃圾回收需要50ms以上,做一次全量的垃圾回收甚至要1s以上,要知道垃圾回收過程中JavaScript線程是要處于暫停執行的狀態,太長的暫行時間對于后端服務的性能是會產生較大影響的,所以出于這方面考慮,V8對堆內存做了限制。即便如此,V8還是提供了可以自定義堆內存大小的方式(--max-old-pace-size),old-space代表老生代、new-space代表新生代。
node --max-old-space-size=xxx index.js //單位為MB // 之前還可以通過-max-new-space-size來定義新生代堆大小,現在已經不可以了
本文題目:詳解Nodejs內存治理-創新互聯
網站網址:http://vcdvsql.cn/article48/ddjhhp.html
成都網站建設公司_創新互聯,為您提供域名注冊、外貿網站建設、品牌網站建設、營銷型網站建設、網頁設計公司、響應式網站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯