我有一个在heroku上运行的快速应用程序。
我希望优化垃圾收集。
heroku的医生说:
节点默认为长寿命对象设置1.5GB的限制。如果这超出了dyno可用的内存,Node可能允许应用程序开始将内存分页到磁盘。
要获得对应用程序垃圾收集器的更多控制,可以向Procfile中的基础V8 JavaScript引擎提供标志:
web: node --optimize_for_size --max_old_space_size=920 server.js如果要将节点裁剪为512 MB的容器,请尝试:
web: node --optimize_for_size --max_old_space_size=460 server.js如果容器是512 is,为什么--max_old_space_size是460而不是512?
这是如何工作的,这是否适合生产?
发布于 2021-01-13 10:31:34
垃圾收集非常复杂,有一些复杂的内存管理算法用于收集和清理堆内存。JavaScript堆是为了应对日益增长的需求而逐步增长的。如果达到允许的堆内存大小,node.js将错误退出。
以下命令参数为:
根据可用内存配置堆大小可以确保Node.js不会尝试使用比可用内存更多的内存,并在内存耗尽时终止。
我建议生产node.js环境:
使用最佳实践和故事来评估生产上的最佳解决方案,例如:https://developer.ibm.com/languages/node-js/articles/nodejs-weather-company-success-story/
https://stackoverflow.com/questions/46018365
复制相似问题