nodejs buffer 内存泄漏问题

摘自<Node.js 高级编程>

var buffer = new Buffer("this is the content of my buffer");

var smallbuffer = buffer.slice(8,19);

这里会有个问题,就是由于子缓冲区在复制的时候,来自于父缓冲区,那么父缓冲区在操作结束的时候,不会被垃圾收集器回收,会带来内存泄漏问题;

新的node.js版本,重新改进了Buffer接口,实测无此问题;

new Buffer(array)废弃于: v6.0.0

稳定性: 0 - 废弃的: 使用 Buffer.from(array) 代替。

function testBuffer() {
    var strBuff = "hello world,hello world,hello world,hello world,hello world,hello world,hello world";
    var arrBuff = new Array;
    var buff = Buffer.from(strBuff);

    for (var i = 0; i < buff.length; i++) {
        arrBuff.push(buff[i]);
    };
    return buff;
};

function testLoop() {
    setInterval(() => {
        var buff = testBuffer();
        var buffSon = buff.slice(1, buff.length - 1);
        //console.log(buffSon);
    }, 1);

};

testLoop();

  

时间: 2024-08-11 09:35:19

nodejs buffer 内存泄漏问题的相关文章

使用Chrome+node-inspector查找NodeJS内存泄漏

关键字:NodeJS, 内存泄漏,node-inspector,Chrome OS:Windows 10 本文介绍如何使用node-inspector+Chrome查找nodejs内存泄漏. 1.创建一个Express app, 参考http://www.cnblogs.com/ldlchina/p/4054974.html. 修改app.js内容如下: //app.js var app = require('express')(); var http = require('http').Ser

Android性能优化之内存泄漏

综述 内存泄漏(memory leak)是指由于疏忽或错误造成程序未能释放已经不再使用的内存.那么在Android中,当一个对象持有Activity的引用,如果该对象不能被系统回收,那么当这个Activity不再使用时,这个Activity也不会被系统回收,那这么以来便出现了内存泄漏的情况.在应用中内出现一次两次的内存泄漏获取不会出现什么影响,但是在应用长时间使用以后,若是存在大量的Activity无法被GC回收的话,最终会导致OOM的出现.那么我们在这就来分析一下导致内存泄漏的常见因素并且如何

深入浅出NodeJS——Buffer

Javascript对字符串处理十分友好,无论是宽字节还是单字节字符串,都被认为是一个字符串.Node中需要处理网络协议.操作数据库.处理图片.文件上传等,还需要处理大量二进制数据,自带的字符串远不能满足这些要求,因此Buffer应运而生. Buffer结构 Buffer是一个典型的Javascript和C++结合的模块,性能相关部分用C++实现,非性能相关部分用javascript实现. Node在进程启动时Buffer就已经加装进入内存,并将其放入全局对象,因此无需require Buffe

Android WebView Memory Leak WebView内存泄漏

在这次开发过程中,需要用到webview展示一些界面,但是加载的页面如果有很多图片就会发现内存占用暴涨,并且在退出该界面后,即使在包含该webview的Activity的destroy()方法中,使用webview.destroy();webview=null;对内存占回收用还是没有任何效果.有人说,一旦在你的xml布局中引用了webview甚至没有使用过,都会阻碍重新进入Application之后对内存的gc.包括使用MapView有时一会引发OOM,几经周折在网上看到各种解决办法,在这里跟大

JavaScript 内存泄漏教程

一.什么是内存泄漏? 程序的运行需要内存.只要程序提出要求,操作系统或者运行时(runtime)就必须供给内存. 对于持续运行的服务进程(daemon),必须及时释放不再用到的内存.否则,内存占用越来越高,轻则影响系统性能,重则导致进程崩溃. 不再用到的内存,没有及时释放,就叫做内存泄漏(memory leak). 有些语言(比如 C 语言)必须手动释放内存,程序员负责内存管理. char * buffer; buffer = (char*) malloc(42); // Do somethin

Memory Leak(内存泄漏)问题总结(转)

最近听了一些关于Memory Leak(内存泄漏)的seminar,感觉有些收获,所以留个记录,并share给朋友. 1 什么是Memory Leak. Memory Leak是指由于错误或不完备的代码造成一些声明的对象实例长期占有内存空间,不能回收.Memory Leak会造成系统性能下降,或造成系统错误. 2 Memory存储模式 我们通常写的C++或Java Code在内存里边的存储状况概如下图. 简单的说,一般局部变量存储于Stack中,以提高运行问速度.而New出来的变量则将引用信息或

Linux下c++程序内存泄漏检测代码范例

Linux下对于程序内存泄漏检测的方法很多,最常用的的莫过于使用valgrind工具.但是valgrind相当于让程序在虚拟机中运行,会带来较大的系统资源开销,还会对程序的运行效率产生较大影响,对于那种资源占用大的程序,如果需要长时间运行才能暴露的泄漏问题,它就显得不太好用. linux下的c++程序中自己实现一个轻量级的泄漏检测代码其实是比较方便的,下面我就给出一个简单的范例,并作简单的说明.当然,我们还是应该提倡使用共享指针,用共享指针自动管理内存可以避免内存泄漏这样的不必要的麻烦. 基本原

内存泄漏是个什么狗东西

内存泄漏是个什么狗东西(hdd) 为啥写这个东西? 最近继续三四天一直在跟踪大家反映很久很久很久的ONVIF协议服务器被NVR或ODM(ONVIF Device Manager)工具探测就会出内存泄漏的问题.后果老严重了,比如三板IPC,内存比较大,有时候24小时就崩了,有时候72小时会崩,而双板IPC,内存比较小,很短的时间就会发现有内存泄漏,用着用着,IPC可能就会出现OOD(Out of memory)内存不足,或者其它异常.自然我们要去跟踪ONVIF协议的问题,然后确实发现ONVIF方面

linux中内存泄漏的检测(五)记录内存泄漏的代码

到目前为止,先后通过wrap malloc.new函数重载和计算指针内存大小的方法,基本上满足了对内存泄漏检测的需要. 如果发现了内存泄漏,那么就要找到内存泄漏的地方并且修正它了. 茫茫代码,如何去找?如果能根据未释放的内存找到申请它的地方就好了. 我们今天就是要做这个事情. 想要根据内存地址查出申请者的信息,那么在一开始申请的时候就要建立地址与申请者之间的映射. 1.内存地址 内存地址,是一个unsigned long型的数值,用void *来存储也可以.为了避免类型转换,我使用了void *