我有以下代码:
let idx = 0;
for (const e of parsedData) {
try {
const datastore = new Datastore({
namespace: 'bdlight',
projectId: e.credential.project_id,
credentials: {
type: e.credential.type,
private_key: e.credential.private_key,
token_url: e.credential.token_uri,
client_email: e.credential.client_email,
},
});
this.logger.log(
`Getting Registration - CNS: ${
e.cns
} - CNPJCPF: ${documentNumber} - ${idx + 1}/${parsedData.length}`,
);
const query = datastore
.createQuery('geral')
.filter('CNPJCPF', '=', documentNumber);
const [result] = await datastore.runQuery(query);
registrations.push(...(result ? result : []));
} catch {
this.logger.log('Error CNS: ' + e.cns);
errors.push('Erro no CNS: ' + e.cns);
} finally {
idx++;
}
}
parsedDate 有超过 300 个凭据,当我在 Kubernetes 上的 pod 上运行它时,出现内存泄漏错误,我有一个 4096 RAM 的 pod。我可以在每次迭代后运行垃圾收集器吗?
我尝试在每次迭代后将数据存储设置为空。
在每次循环迭代后运行垃圾收集器可能不是解决内存泄漏问题的最佳解决方案。虽然可以使用
global.gc()
(或浏览器中的 window.gc()
)在 JavaScript 中手动触发垃圾回收,但通常不推荐这样做,因为它可能会产生意想不到的后果,并且可能无法有效解决底层内存泄漏问题。
相反,请考虑以下内容:
一般来说,重要的是找出内存泄漏的根本原因并直接解决它,而不是依赖于手动垃圾收集或增加资源限制。