console.log引发内存泄漏,打包时自动去除打印语句、debug

console.log导致内存泄漏

在开发环境中我们经常使用 console.log 在控制台输出信息。可以用于查看数据,还可以进行代码调试等;

但是在生产环境中 console.log 等一些打印语句,除了会暴露开发过程中的一些中间信息外,还可能造成内存泄漏。

console.log 本身不会直接引发内存泄漏,但在某些情况下,使用 console.log 可能间接导致内存泄漏。

  1. 引用闭包:如果你在console.log()中记录了一个闭包,当这个闭包内部引用了外部的变量时,这些变量可能不会被垃圾回收机制回收,从而导致内存泄漏。

    javascriptfunction createClosure() {
        let largeObject = new Array(1000000).fill('leak');
        return function() {
            console.log(largeObject); // 这里会保持对 largeObject 的引用
        };
    }
    const closure = createClosure();
    // 在这里,largeObject 仍然会被引用,导致内存无法被回收
    
  2. 循环引用:如果你在循环中使用 console.log 打印大量对象,尤其是复杂的对象结构,可能会导致循环引用,从而阻止垃圾回收。

  3. 长时间运行的应用:在长时间运行的应用中,频繁调用 console.log 可能会导致控制台输出积累,尤其是当你打印大量数据时,可能会消耗大量内存。

  4. 调试信息:如果你在开发过程中使用了大量的调试信息,且在生产环境中没有清理这些调试语句,可能会造成不必要的内存使用。

打包时自动去掉console.log

webpack:

通过工具:terser

const { defineConfig } = require('@vue/cli-servise');
module.exports = defineConfig({
    transpileDependencies:true,
    terser:{
        terserOptions:{
            compress:{
            	//去除所有打印语句
                drop_console:true,
                //去除所有debug
                drop_debugger:true,
            },
     	},
     },
});

vite:

import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';
 
export default defineConfig({
    plugins:[vue()],
    build:{
        minify:'terser',
        terserOptions:{
            compress:{
            	//去除所有打印语句
                drop_console:true,
                //去除所有debug
                drop_debugger:true,
            },
        },
    },
});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值