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

海量请求+长时间运行 -> 内存控制 -> 一切资源高效循环利用

1. V8的垃圾回收机制与内存限制

  在Node中通过JavaScript使用内存时,只能使用部分内存(64位系统下约1.4GB,32位系统下约为0.7GB)。

  在V8中,所有的JavaScript对象都是通过堆来进行分配的,当申请的堆空闲内存不够分配新的对象,将继续申请堆内存,直到堆得大小超过V8的限制为止。

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

    -> (1)V8最初为浏览器设计,不太可能遇到用大量内存的场景。

    -> (2)V8的垃圾回收机制限制。(1.5GB的垃圾回收堆内存,需要大约50毫秒以上,这使得应用性能和响应能力会直线下降)

  突破V8限制:

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

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

  V8的垃圾回收机制 ---- 分代式垃圾回收机制

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

2. 高效使用内存

  (1)了解作用域

  (2)了解闭包

  无法立即回收的内存有:

    ->闭包

    ->全局变量引用

  因此,要小心此类变量的无限制添加

3. 内存指标

  --会存在一些我们认为会回收但是却没有被回收的对象,这会导致内存占用无限增长。一旦增长达到V8内存限制,将会得到内存溢出错误,进而导致进程退出。

  (1)查看内存使用情况 -> $node >process.memoryUsage() {

      {

       rss (resident set size 进程的常驻内存部分):132852672, (除此外,内存其余部分在交换区(swap)或文件系统(filesystem)中)

         heapTotal(堆中总共申请的内存量) :6131200,

         heapUsed(目前堆中使用中的内存量):2757120,

      }

  (2)查看系统内存占用

      -> $node >os.totalmem()  “系统的总内存”

      -> $node >os.freemem() “系统的闲置内存”

  (3)堆外内存

  受V8的垃圾回收限制的主要是V8的堆内存。

4. 内存泄漏

  造成内存泄漏的原因:

    (1)缓存

    (2)队列消费不及时

    (3)作用域未释放

5. 内存泄漏排查

  使用常见工具:

    (1)node-heapdump

    (2)node-memwatch

6. 大内存应用

 

转载于:https://www.cnblogs.com/libinfs/p/5922447.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/356709.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java到LDAP教程(包括如何安装LDAP服务器/客户端)

本教程将向您展示如何编写Java代码以与LDAP交互。 但是在执行此操作之前&#xff0c;我们需要在计算机上设置LDAP服务器和客户端。 如果此时您不确定到底是什么LDAP&#xff0c;建议您参考这篇文章&#xff0c;其中提供了一个很好的定义示例。 &#xff08;简而言之&#xff0…

linux 嗅探密码,Linux下嗅探又一实例截取

在SecureCRT下利用rz命令上传我们用到的arpsniffer.c&#xff0c;然后编译&#xff1a;[rootbbs111 root]# gcc -I/usr/local/include -L/usr/local/lib -o arpsniffer arpsniffer.c -lpcap -lnet报错&#xff0c;可能是没装libnet的缘故&#xff0c;看说明Make: first you mus…

清北学堂十一培训酱油记

【day0】 要坐大巴去北京……&#xff08;没错是大巴&#xff01;&#xff09;然而说好的六点走&#xff0c;生生等到了七点……不过一路上还是很happy的&#xff01;某导游兔子 然而到华电之后&#xff0c;身子都散架了……这次的酒店在北农&#xff0c;感觉还可以&#xff0c…

在linux下赋予000权限,【linux】对于文件权限的理解

本篇博文旨在介绍linux下的权限问题&#xff1b;介绍了Linux下&#xff0c;查看权限、修改权限等方法&#xff1b;并通过分别在超级用户(root)和普通用户下进行测试&#xff0c;探索不同等级的用户进入目录需要的权限&#xff0c;以及进入后&#xff0c;显示和创建文件需要的权…

手把手教你制作简易计算器

实现过程&#xff1a; HTMLCssJS 具体通过标签实现计算器整个的框架 通过Css样式实现计算器页面布局及框架优化 通过JavaScript算法实现计算器计算过程 次实验过程&#xff1a; 背景图片背景音乐&#xff08;看个人意愿加&#xff01;&#xff09; 安排&#xff1a; <!--HT…

【dp】导弹拦截

拦截导弹 (missile.pas/c/cpp) 来源&#xff1a;NOIP1999(提高组) 第一题 【问题描述】 某国为了防御敌国的导弹袭击&#xff0c;发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷&#xff1a;虽然它的第一发炮弹能够到达任意的高度&#xff0c;但是以后每一发炮弹都不…

安装tron_具有Tron效果的JavaFX 2 Form

安装tron这是一个具有TRON效果的简单JavaFX登录表单。 在此示例中&#xff0c;我使用CSS设置TextField和Button的样式。 这是CSS和Effect代码的片段&#xff1a; .text-field{-fx-background-color: transparent;-fx-border-color: #00CCFF;-fx-text-fill: white; }.password-f…

linux版本photoshop,在linux上使用ps(转载)

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼用Photoshop的&#xff0c;虽说GIMP也是不错&#xff0c;但是用起来总有点不顺的感觉&#xff0c;决定搞一个运行在Linux下的Photoshop&#xff0c;找了好多资料都没有虚拟CS的&#xff0c;不过倒是了解了不少虚拟Photoshop 这方面…

优美三角剖分_递归

问题 D: 优美三角剖分 时间限制: 1 Sec 内存限制: 64 MB提交: 13 解决: 4[提交][状态][讨论版]题目描述 小X同学为了搞好和小C同学的关系&#xff0c;特意寻找了一些优美的图像作为礼物。这是一些由无穷无尽三角形组成的极为优美的图形&#xff0c;小X同学很想实现这些极富美…

在Spring 4.2中更简单地处理异步事务绑定事件

介绍 如您可能已经知道的&#xff08;例如&#xff0c;从我以前的博客文章中 &#xff09;&#xff0c;不再需要创建一个单独的类&#xff0c;该类使用onApplicationEvent方法实现ApplicationListener以便能够对应用程序事件做出响应&#xff08;包括来自Spring Framework本身和…

linux chattr 无权限,从零开始学习Linux(二十八):文件权限之chattr权限

1、chattr命令命令格式&#xff1a; chattr [-] [选项] 文件名或者目录名&#xff1b;参数说明&#xff1a;&#xff1a;增加权限&#xff1b;-&#xff1a;删除权限&#xff1b; 等于某权限&#xff1b;选项说明&#xff1a;i&#xff1a;如果对文件设置i属性&#xff0c;则不…

初等数论及其应用——中国剩余定理

在线性代数中&#xff0c;我们用高斯消元解决多元的线性方程组&#xff0c;而在数论中&#xff0c;面对一元变量的线性模方程组&#xff0c;我们利用中国剩余定理去求解x。 转载于:https://www.cnblogs.com/rhythmic/p/5928483.html

linux下编译openjdk7,Ubuntu 14.04.3 64位环境下OpenJDK7编译

系统环境&#xff1a;Ubuntu 14.04.3 -amd64 in VMWare1.安装openjdk7依赖sudo apt-get build-dep openjdk-7sudo apt-get install openjdk-7-jdksudo apt-get install build-essential gawk m4 libasound2-dev libcups2-dev libxrender-dev xorg-dev xutils-dev x11proto-prin…

jQuery选择器的效率问题

jQuery提供了功能强大&#xff0c;并兼容多种css版本的选择器&#xff0c;不过发现很多同学在使用选择器时并未注重效率的问题。 a) 尽量使用Id选择器&#xff0c;jQuery选择器使用的API都是基于getElementById或getElementsByTagName&#xff0c;因此可以知道效率最高的是Id选…

HTTP请求和标头参数的CDI拦截器-简单示例

在使用Java EE开发和发展REST API的过程中&#xff0c;有些情况下您希望以更细粒度的方式&#xff08;视情况而定&#xff09;对传入的HTTP请求&#xff08;特别是标头参数&#xff09;进行“观察” Servlet过滤器或更具体的ContainerRequestFilters 。 我发现在某些情况下非常…

csgo服务器搭建 linux,请问搭建csgo服务器切换创意工坊地图报错怎么办

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼Unknown command "sv_maxcmdrate"Unknown command "cash_team_elimination_hostage_map"Unknown command "cash_team_win_by_time_running_out"Unknown command "sv_vote_creation_time"W…

1405 树的距离之和

1405 树的距离之和 基准时间限制&#xff1a;1 秒 空间限制&#xff1a;131072 KB给定一棵无根树&#xff0c;假设它有n个节点&#xff0c;节点编号从1到n, 求任意两点之间的距离&#xff08;最短路径&#xff09;之和。Input第一行包含一个正整数n (n < 100000)&#xff0c…

linux c 11 运行库,11.1.3 运行库与I/O

11.1.3 运行库与I/O在了解了glibc和MSVC的入口函数的基本思路之后&#xff0c;让我们来深入了解各个初始化部分的具体实现。但在具体了解初始化之前&#xff0c;我们要先了解一个重要的概念&#xff1a;I/O。IO(或I/O)的全称是Input/Output&#xff0c;即输入和输出。对于计算…

设置Elasticsearch N-Gram Word分析器的过程

说n-gram是一个大话题&#xff0c;这是轻描淡写的。 进行快速搜索&#xff0c;您会发现自己盯着语言学和语言模型&#xff0c;数据挖掘或特定蛋白质的分解对首次亮相文化的衰落所隐含的信息量。 好吧&#xff0c;我在跟那最后一个开玩笑。 但是&#xff0c;如果您是开发人员&a…

linux windows 丢失,Win10预览版9879硬盘丢失的Linux解决方案

IT之家讯 12月3日消息&#xff0c;最近IT之家论坛网友九仙仙总结了Win10预览版9879硬盘问题的解决方法&#xff0c;并在论坛中发布出来。经测试&#xff0c;此为快速有效的解决方法&#xff0c;故公之于众供朋友们参考。以下为作者原文。开头说明两点&#xff1a;1、这是我个人…