我在heroku上运行了一个快速应用程序。
我希望优化垃圾收集。
heroku docs说:
默认情况下,节点为长期存在的对象设置1.5 GB的限制。如果这超出了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
如果容器是512mb,为什么--max_old_space_size
是460而不是512?
这是如何工作的,适合生产?
答案 0 :(得分:0)
垃圾收集真的很复杂,有复杂的内存管理算法用于收集和清理堆内存。为了满足不断增长的需求,JavaScript 堆会逐渐增长。如果达到允许的堆内存大小,node.js 将错误退出。
以下命令参数是:
根据可用内存配置堆大小可确保 Node.js 不会尝试使用比可用内存更多的内存并在其内存耗尽时终止。
我会推荐生产 node.js 环境:
使用最佳实践和案例来评估生产中的最佳解决方案,例如:https://developer.ibm.com/languages/node-js/articles/nodejs-weather-company-success-story/