最近重拾 nodejs, 照抄了个简单的签到程序, 挂在服务器上用, 使用 pm2 启动, 但发现为啥内存占用那么高 就这和 hello word 一样简单的代码, 显示内存占用 63.6mb, 到底是我写的问题, 还是什么原因. 看了眼 docker 里跑的其他几个签到服务, 大多在十几 M 左右, 用 chatgpt 把这段代码转下, 同样用 pm2 启动, 也是占用非常少.
const schedule = require('node-schedule')
const axios = require('axios')
const profiles = require('./config')
const getNowTime = () => {
return new Date()['toLocaleDateString']()
}
const request = () => {
profiles.forEach(async item => {
const {url, headers} = item
console.log(`\n\n------${getNowTime()} - ${url}:开始签到------\n`)
const res = await axios({
url,
method: 'post',
headers,
})
if (res && res.data) {
console.log(`------ ${getNowTime()} 签到成功 ------\n`)
console.log(JSON.stringify(res.data))
} else {
console.log(`------ ${getNowTime()} 签到失败 ------\n`)
console.log(res)
}
})
}
const checkin = () => {
schedule.scheduleJob('0 0 7 * * *', () => {
setTimeout(() => {
request()
}, Math.random() * 10 * 60 * 1000)
})
}
console.log(`开始执行任务-${getNowTime()}`)
checkin()
1
jqtmviyu683 OP 发完就发现自己写了个 bug, 不该用 forEach 的
|
2
jqtmviyu683 OP 感觉自己犯蠢了, 写个最简单的 setInterval + console.log()不就可以验证了吗?
51.9mb v8.getHeapStatistics() 打印 { total_heap_size: 7430144, total_heap_size_executable: 524288, total_physical_size: 6549504, total_available_size: 4339934392, used_heap_size: 4521952, heap_size_limit: 4345298944, malloced_memory: 139368, peak_malloced_memory: 246160, does_zap_garbage: 0, number_of_native_contexts: 1, number_of_detached_contexts: 0, total_global_handles_size: 8192, used_global_handles_size: 2368, external_memory: 408283 } |