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;但相信很多朋友和我一样在听完前面的部分发现信…

基于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;只要有就连接就结束监…

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

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

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

为了更好地满足企业培训的需求&#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…

程序的内存模型

师从黑马程序员 内存分区模型 内存大方向划分为4个区域 1、代码区&#xff1a;存放函数体的二进制代码&#xff0c;由操作系统管理的 2、全局区&#xff1a;存放全局变量环和静态变量以及常量 3、栈区&#xff1a;由编译器自动分配释放&#xff0c;存放函数的参数值&#…

H12-811_503

503.如下图所示&#xff0c;下列说法正确是&#xff1f;( ) A.主机A和主机B的广播地址相同 B.主机A可以ping通主机B C.主机A和主机B不能获取对方的MAC地址 D.主机A的ARP缓存中存在如下条目10.0.12.5 MAC-B 答案&#xff1a;C 注释&#xff1a; 两个主机IP地址的网…

四大组件 - ContentProvider

参考&#xff1a;Android 这 13 道 ContentProvider 面试题&#xff0c;你都会了吗&#xff1f; 参考&#xff1a;《Android 开发艺术探索》 第 9.5 节&#xff08;ContentProvider 的工作过程&#xff09; 参考&#xff1a;内容提供者程序 参考&#xff1a;<provider>&g…

Nucleosome, Recombinant Human, H2BK120ub1 dNuc, Biotinylated

EpiCypher&#xff08;国内授权代理商欣博盛生物&#xff09;是一家为表观遗传学和染色质生物学研究提供高质量试剂和工具的专业制造商。EpiCypher生产的在E. coli中表达的重组人单核小体(组蛋白H2A、H2B、H3和H4各2个;accession numbers:H2A-P04908;H2B-O60814;H3.1-P68431;H4…

SpringMVC处理ajax请求之@ResponseBody注解,将后端数据响应到浏览器

上一篇文章讲到SpringMVC处理ajax请求用到的RequestBody注解SpringMVC处理ajax请求&#xff08;RequestBody注解&#xff09;&#xff0c;ajax向后端传递的数据格式详解-CSDN博客&#xff0c;这个注解帮我们解决了如何将客户端的数据通过json数据传递到服务器&#xff0c;简单说…

数据探索与可视化:可视化分析数据关系-中

目录 一、前言 二、介绍 Ⅰ.一个分类变量和一个连续变量 Ⅱ.两个分类变量的一个连续变量 Ⅲ.两个分类变量和两个连续变量 Ⅳ.一个分类变量和多个连续变量 ①.平行坐标轴 ②.矩阵散点图 三、结语 一、前言 在做数据分析的时候&#xff0c;很少会遇到连续变量和分类变量…

PyTorch如何支持 GPU 加速计算

在 PyTorch 中&#xff0c;torch.Tensor 是核心的数据结构&#xff0c;它与 NumPy 的 ndarray 类似&#xff0c;用于存储和操作多维数据。但与 NumPy 不同的是&#xff0c;PyTorch 的 Tensor 除了能在 CPU 上运行之外&#xff0c;还能够无缝地利用 GPU 进行计算加速。 GPU 加速…