对Rails (4.2.8)应用程序上的Ruby (2.4.1)示例,使用 Puma 配置并部署在Heroku (cedar-16)上。目前在Mojave 10.14.5 MBP 上开发。我的任务是减少内存使用,最近通过这篇文章发现了 jemalloc 。我重新安装了启用了 jemalloc 的 Ruby(使用 RVM),如以下输出所示 - . 我继续添加jemalloc gem和 bundle 安装没有问题。我还设置了Heroku buildpack并配置了必要的环境变量。-lpthread -ljemalloc -lgmp -ldl -lobjc
但是,使用我的 Gemfile 中的 gem,我无法运行任何 rake/rails 命令 -rails c
返回以下错误,随后我的 Mac 粉丝立即启动:
ruby(45487,0x10739c5c0) malloc: *** malloc_zone_unregister() failed for 0x7fff94a3f000
foreman start
卡在* Preloading application
. 如果我删除 gem,所有问题都会消失并且应用程序可以正常工作。
由于我不知道 Heroku buildpacks 是如何工作的,以及那个特定的 buildpacks 是如何精确编程的,所以我的问题如下:
- 添加 buildpack 后,我真的需要在项目中安装 gem 吗?
- 添加 buildpack 后,我是否需要使用 jemalloc 编译的 Ruby 版本?
- 如果我确实需要 gem,我该如何摆脱上述错误?