Node.js之内存限制理解_对处理前端打包内存溢出有所帮助

Node.js内存限制理解_对处理前端打包内存溢出有所帮助

文章目录

  • Node.js内存限制理解_对处理前端打包内存溢出有所帮助
  • Node.js内存限制
    • 1. 查看Node.js默认内存限制
      • 1. Ndos.js_V20.10.0
      • 2. Node.js_V18.16.0
    • 2. V8引擎垃圾回收相关
    • Heap organization
    • 堆组织

Node.js内存限制

默认情况下,Node.js 的内存限制是根据系统的物理内存大小动态分配的,并且在不同操作系统下可能会有所不同。在大多数情况下,Node.js 默认的内存限制应该是 1.4 GB(1024 * 1024 * 1400 字节),(64位系统下约为1.4 GB,32位系统下约为0.7 GB)。但是请注意,这个限制在不同的版本和设置中可能会有所不同。

另外,可以通过在启动 Node.js 时使用 --max-old-space-size 参数来手动设置内存限制的大小,例如:node --max-old-space-size=2048 app.js

1. 查看Node.js默认内存限制

Node.js 的内存限制可以通过 v8 模块来查看。可以在 Node.js 的命令行界面或者脚本中执行以下代码来获取默认的内存限制:

注意:不同Node.js版本下内存限制会有差异,以实际查看为准

下面以Node.js版本v20.10.0v18.16.0为例查看内存限制信息

  1. 编写查看Node.js内存的js脚本文件ViewNnodeDefaultMemory.js如下
const v8 = require('v8');
console.log(v8.getHeapSpaceStatistics())
//console.log(v8.getHeapSpaceStatistics()[2].space_size);
  1. 执行脚本后输出如下:

1. Ndos.js_V20.10.0

在这里插入图片描述

  • 详细信息如下:
C:\Users\23013\Desktop\node>node -v
v20.10.0C:\Users\23013\Desktop\node>node ViewNnodeDefaultMemory.js
[{space_name: 'read_only_space',space_size: 0,space_used_size: 0,space_available_size: 0,physical_space_size: 0},{space_name: 'new_space',space_size: 1048576,space_used_size: 409040,space_available_size: 621840,physical_space_size: 1048576},{space_name: 'old_space',space_size: 2781184,space_used_size: 2730096,space_available_size: 24,physical_space_size: 2781184},{space_name: 'code_space',space_size: 262144,space_used_size: 245712,space_available_size: 0,physical_space_size: 262144},{space_name: 'shared_space',space_size: 0,space_used_size: 0,space_available_size: 0,physical_space_size: 0},{space_name: 'new_large_object_space',space_size: 0,space_used_size: 0,space_available_size: 1030880,physical_space_size: 0},{space_name: 'large_object_space',space_size: 270336,space_used_size: 262160,space_available_size: 0,physical_space_size: 270336},{space_name: 'code_large_object_space',space_size: 0,space_used_size: 0,space_available_size: 0,physical_space_size: 0},{space_name: 'shared_large_object_space',space_size: 0,space_used_size: 0,space_available_size: 0,physical_space_size: 0}
]C:\Users\23013\Desktop\node>

2. Node.js_V18.16.0

在这里插入图片描述

  • 详细信息如下:
C:\Users\jinshengyuan\Desktop\node>node -v
v18.16.0C:\Users\jinshengyuan\Desktop\node>node ViewNodeDefaultMemery.js
[{space_name: 'read_only_space',space_size: 0,space_used_size: 0,space_available_size: 0,physical_space_size: 0},{space_name: 'old_space',space_size: 4386816,space_used_size: 4309872,space_available_size: 64,physical_space_size: 4386816},{space_name: 'code_space',space_size: 471040,space_used_size: 434368,space_available_size: 0,physical_space_size: 471040},{space_name: 'map_space',space_size: 532480,space_used_size: 515576,space_available_size: 56,physical_space_size: 532480},{space_name: 'large_object_space',space_size: 0,space_used_size: 0,space_available_size: 0,physical_space_size: 0},{space_name: 'code_large_object_space',space_size: 0,space_used_size: 0,space_available_size: 0,physical_space_size: 0},{space_name: 'new_large_object_space',space_size: 0,space_used_size: 0,space_available_size: 1030976,physical_space_size: 0},{space_name: 'new_space',space_size: 1048576,space_used_size: 434904,space_available_size: 596072,physical_space_size: 1048576}
]C:\Users\jinshengyuan\Desktop\node>

2. V8引擎垃圾回收相关

A tour of V8: Garbage Collection — jayconrod.com

在上面链接中,可以找到Heap organization内容,有提到New-spaceOld-data-space的介绍,具体如下:

Heap organization

Before we dive into the internal workings of the garbage collector, let’s talk about how the heap itself is organized. V8 divides the heap into several different spaces:

  • New-space: Most objects are allocated here. New-space is small and is designed to be garbage collected very quickly, independent of other spaces.
  • Old-pointer-space: Contains most objects which may have pointers to other objects. Most objects are moved here after surviving in new-space for a while.
  • Old-data-space: Contains objects which just contain raw data (no pointers to other objects). Strings, boxed numbers, and arrays of unboxed doubles are moved here after surviving in new-space for a while.
  • Large-object-space: This space contains objects which are larger than the size limits of other spaces. Each object gets its own 'd region of memory. Large objects are never moved by the garbage collector.mmap
  • Code-space: objects, which contain JITed instructions, are allocated here. This is the only space with executable memory (although s may be allocated in large-object-space, and those are executable, too).Code``Code
  • Cell-space, property-cell-space and map-space: These spaces contain s, s, and s, respectively. Each of these spaces contains objects which are all the same size and has some constraints on what kind of objects they point to, which simplifies collection.Cell``PropertyCell``Map

Each space is composed of a set of pages. A is a contiguous chunk of memory, allocated from the operating system with (or whatever the Windows equivalent is). Pages are always 1 MB in size and 1 MB aligned, except in large-object-space, where they may be larger. In addition to storing objects, pages also contain a header (with various flags and meta-data) and a marking bitmap (used to indicate which objects are live). Each page also has a slots buffer, allocated in separate memory, which forms a list of objects which may point to objects stored on the page. This is commonly known as a remembered set. More on this later.Page``mmap

With the background out of the way, let’s dive into the garbage collector.

翻译过来如下:

堆组织

在我们深入研究垃圾回收器的内部工作原理之前,让我们先谈谈堆本身是如何组织的。V8 将堆划分为几个不同的空间

  • **新空间:**大多数对象都在此处分配。新空间很小,可以非常快速地收集垃圾,独立于其他空间。
  • **旧指针空间:**包含大多数对象,这些对象可能具有指向其他对象的指针。大多数物体在新空间中存活一段时间后会被转移到这里。
  • **旧数据空间:**包含仅包含原始数据的对象(不指向其他对象的指针)。字符串、盒装数字和未装箱的双精度数组在新空间中存活一段时间后被移至此处。
  • **大对象空间:**此空间包含大于其他空间大小限制的对象。每个对象都有自己的内存区域。垃圾回收器永远不会移动大型对象。mmap
  • **代码空间:**包含 JIT 指令的对象在此处分配。这是唯一具有可执行内存的空间(尽管 s 可以分配在大对象空间中,并且这些也是可执行的)。Code``Code
  • 单元**空间、属性单元空间和地图空间:**这些空格分别包含 s、s 和 s。这些空间中的每一个都包含大小相同的对象,并且对它们指向的对象类型有一些限制,从而简化了收集。Cell``PropertyCell``Map

每个空间都由一组页面组成。A 是连续的内存块,从操作系统分配(或任何 Windows 等效项)。页面的大小始终为 1 MB,对齐的页面为 1 MB,但在大型对象空间中,页面可能更大。除了存储对象之外,页面还包含标题(带有各种标志和元数据)和标记位图(用于指示哪些对象处于活动状态)。每个页面还有一个插槽缓冲区,分配在单独的内存中,它形成一个对象列表,这些对象可能指向存储在页面上的对象。这通常称为记忆集。稍后会详细介绍。Page``mmap

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

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

相关文章

Lazysysadmin

信息收集 # nmap -sn 192.168.1.0/24 -oN live.port Starting Nmap 7.94 ( https://nmap.org ) at 2024-01-30 21:10 CST Nmap scan report for 192.168.1.1 (192.168.1.1) Host is up (0.00075s latency). MAC Address: 00:50:56:C0:00:08 (VMware) Nma…

Docker容器化安装SonarQube9.9

文章目录 1.环境准备1.1 版本信息1.2 系统设置 2.Docker环境安装2.1 卸载旧版本2.2 设置源2.3 安装Docker2.4 设置阿里仓库2.5 启动Docker 3.Docker Compose4.登录4.1 首页4.2 安装插件 5.制作镜像离线安装 1.环境准备 1.1 版本信息 名称版本备注Docker25.0.1当前2024-01-01最…

《C程序设计》上机实验报告(五)之一维数组二维数组与字符数组

实验内容&#xff1a; 1.运行程序 #include <stdio.h> void main( ) { int i,j,iRow0,iCol0,m; int x[3][4]{{1,11,22,33},{2,28,98,38},{3,85,20,89}}; mx[0][0]; for(i0;i<3;i) for(j0;j<4;j) if (x[i][j]>m) { mx[i][j]; iRowi…

Elasticsearch:将文档级安全性 (DLS) 添加到你的内部知识搜索

作者&#xff1a;来自 Elastic Sean Story 你的企业很可能淹没在内部数据中。 你拥有问题跟踪、笔记记录、会议记录、维基页面、视频录制、聊天以及即时消息和私信。 并且不要忘记电子邮件&#xff01; 难怪如此多的企业都在尝试创造工作场所搜索体验 - 为员工提供集中、一站…

react 之 UseReducer

UseReducer作用: 让 React 管理多个相对关联的状态数据 import { useReducer } from react// 1. 定义reducer函数&#xff0c;根据不同的action返回不同的新状态 function reducer(state, action) {switch (action.type) {case INC:return state 1case DEC:return state - 1de…

【飞书小技巧】——飞书文档转 markdown 详细教程

飞书文档转 markdown 详细教程 基于项目:https://github.com/Wsine/feishu2md 如何使用 在线版 访问 https://feishu2md.onrender.com/ 粘贴文档链接即可&#xff0c;文档链接可以通过 分享 > 开启链接分享 > 复制链接 获得。 点击下载之后,会提示 Please wait. It ma…

2024/2/1学习记录

echarts 为柱条添加背景色&#xff1a; 若想设置折线图的点的样式&#xff0c;设置 series.itemStyle 指定填充颜色就好了&#xff0c;设置线的样式设置 lineStyle 就好了。 在折线图中倘若要设置空数据&#xff0c;用 - 表示即可&#xff0c;这对于其他系列的数据也是 适用的…

【C/C++】C/C++编程——整型(二)

在 C 中&#xff0c;整型数据可以分为有符号数&#xff08;Signed&#xff09;和无符号数&#xff08;Unsigned&#xff09;&#xff0c;这两种类型主要用于表示整数值&#xff0c;但它们在表示范围和用途方面有所不同。默认情况下&#xff0c;整数类型如 int、short、long 都是…

中科大计网学习记录笔记(三):接入网和物理媒体

前言&#xff1a; 学习视频&#xff1a;中科大郑烇、杨坚全套《计算机网络&#xff08;自顶向下方法 第7版&#xff0c;James F.Kurose&#xff0c;Keith W.Ross&#xff09;》课程 该视频是B站非常著名的计网学习视频&#xff0c;但相信很多朋友和我一样在听完前面的部分发现信…

开发中常用的数据结构

在软件开发中&#xff0c;常用的数据结构具有各自的场景和应用。以下是一些常见的数据结构、它们的应用场景以及相应的代码示例&#xff1a; 数组&#xff08;Array&#xff09;: 场景&#xff1a;用于存储一组相同类型的元素&#xff0c;通过索引访问元素。例子&#xff1a;le…

深度学习如何入门?

深度学习是一个广泛而深入的领域&#xff0c;入门可能看起来有些令人望而却步。然而&#xff0c;通过有条理地学习基础知识和逐步实践&#xff0c;您可以有效地掌握深度学习。以下是入门深度学习的建议步骤&#xff1a; 1. 强化基础知识 数学基础&#xff1a;深入学习线性代数…

Shell - 学习笔记 - 2.8 - Shell字符串详解

字符串&#xff08;String&#xff09;就是一系列字符的组合。字符串是 Shell 编程中最常用的数据类型之一&#xff08;除了数字和字符串&#xff0c;也没有其他类型了&#xff09;。 字符串可以由单引号 包围&#xff0c;也可以由双引号" "包围&#xff0c;也可以不…

学术名词积累和解释(机器人感知,运动规划,控制领域)——那些没人告诉你的专用名词

背景和初衷&#xff1a; 刚入门的学术小白们在阅读文献的过程中&#xff0c;总会遇到一些默生涩难懂但是通用的学术名词。例如什么 proactive and reactive, nonholonomic and holonomic 。 这里为了方便大家&#xff0c;总结和解释自己阅读学术文章过程中遇到的机器人领域的相…

2024-02-01 思考-关于商业思维和技术实现之间的关系

摘要: 最近在持续的进行商业推动&#xff0c;对于商业行为之下&#xff0c;与技术实现之间的关系&#xff0c;有了更为深刻的认知。 本文做下简单的记录。 商业思维: 什么是商业思维&#xff1f;很有意思的问题&#xff0c;好像除了商业思维&#xff0c;还有一堆其他迥然相反…

基于tidevice实现iOS app自动化使用详解

目录 1、IOS自动化工具概述 2、tidevice工具的原理和使用 2.1、tidevice的原理 2.2、tidevice实现的功能 2.3、tidevice的安装 2.4、tidevice的使用 2.4.1、设备管理 1、查看已连接的设备的列表 2、检测设备连接状态 3、等待设备连接&#xff0c;只要有就连接就结束监…

滑动一整屏

需求&#xff1a;用户通过鼠标滚轮滑动的时候一整屏进行翻页。 参考网站效果 微派网络 实现思路&#xff1a; 1.首先我们需获取可视区域的高度 document.documentElement.clientHeight; 2.根据动态设置top属性即可进行翻页。 3.需判断上滑还是下滑 根据onmousewheel滚轮事…

2024-01-06-AI 大模型全栈工程师 - 如何训练百亿参数大模型

摘要 2024-01-06 周六 杭州 晴 本节内容: 讲座模式&#xff0c;学习大模型训练的相关流程。 课程内容 1. Transformer 回顾 2. 模型架构-生成式 3. 预训练数据的构建 4. 中文字典的构建 4. 预训练目标的构建 5. 预训练相关-预训练策略 6. 预训练相关-并行化训练 7. 预训练…

2024/2/1 备战蓝桥杯 3-3 二叉树

目录 二叉树的遍历 B3642 二叉树的遍历 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 完全二叉树的权值 0完全二叉树的权值 - 蓝桥云课 (lanqiao.cn) 美国血统 American Heritage P1827 [USACO3.4] 美国血统 American Heritage - 洛谷 | 计算机科学教育新生态 (luogu.c…

搭建高效企业培训平台:教育系统源码开发详解

为了更好地满足企业培训的需求&#xff0c;许多组织纷纷转向数字化教育&#xff0c;搭建高效的企业培训平台成为当务之急。本篇文章&#xff0c;小编将为您讲解教育系统源码的开发细节&#xff0c;为搭建一个功能强大、灵活高效的企业培训平台提供详尽的指南。 一、教育系统的…

Django响应(一)

一、HttpResponse与JsonResponse 1.1、HttpResponse 官网:https://docs.djangoproject.com/zh-hans/4.1/ref/request-response/#django.http.HttpResponse 返回给浏览器端的响应对象 from django.http import HttpResponse response = HttpResponse("Heres the text o…