【问题标题】:heroku out of memory issue r14heroku 内存不足问题 r14
【发布时间】:2022-01-04 00:47:02
【问题描述】:

我在 heroku 上使用 java 和 jvm 运行 python 代码,出于某种原因,java 和 jvm 似乎占用了所有内存。我已经尝试通过 java 选项降低它可以在 config vals 中使用的最大值,但它似乎不起作用。这是日志

2021-11-25T19:08:05.685313+00:00 heroku[worker.1]: source=worker.1 dyno=heroku.237353453.e3a2ee9c-6853-478f-98d7-eb7057461bf8 sample#memory_total=459.22MB sample#memory_rss=447.67MB sample#memory_cache=11.55MB sample#memory_swap=0.00MB sample#memory_pgpgin=291821pages sample#memory_pgpgout=233536pages sample#memory_quota=512.00MB
2021-11-25T19:08:26.682574+00:00 heroku[worker.1]: source=worker.1 dyno=heroku.237353453.e3a2ee9c-6853-478f-98d7-eb7057461bf8 sample#load_avg_1m=0.07 sample#load_avg_5m=0.08 sample#load_avg_15m=0.08
2021-11-25T19:08:26.728173+00:00 heroku[worker.1]: source=worker.1 dyno=heroku.237353453.e3a2ee9c-6853-478f-98d7-eb7057461bf8 sample#memory_total=459.22MB sample#memory_rss=447.67MB sample#memory_cache=11.55MB sample#memory_swap=0.00MB sample#memory_pgpgin=291821pages sample#memory_pgpgout=233536pages sample#memory_quota=512.00M

是否有任何解决方案可以在不进行任何重大更改的情况下降低内存使用量。如果我没有提供有关该问题的大量信息,也很抱歉。我在做某事。

编辑 才意识到我没有把所有的错误日志都放在这里

【问题讨论】:

  • 你在使用 Maven 吗?
  • 是的,当我想到它时,我实际上正在使用它

标签: python java heroku jvm


【解决方案1】:

在处理 Java 应用程序中的内存占用时,您需要考虑以下几点:

  • 元空间:存储类定义和元数据
  • 堆:它存储应用程序分配和使用的Java对象

减少元空间内存
这可能是第一步:从pom.xml 中删除不必要的依赖项(如果有的话)。如果可能的话,可以在不进行主要代码重构的情况下减少内存。

考虑重构现有代码以删除大量依赖项:这可能需要一些返工/重新测试,但它确实有帮助。

还分析transitive dependencies(由pom.xml中定义的依赖项导入)并排除不需要的内容

减少堆内存

下一步是了解(分析)应用程序的内存使用情况,以确定可以减少内存分配的位置。

在本地开发环境中执行此操作更容易(Java IDE 具有内置分析器,或者您可以使用 VisualV 等 JVM 工具),但是可以在 on Heroku 上执行此操作。

在这里找到关于 Java 内存的好消息 resource 和关于 Heroku 上 Java 的 Medium 帖子

【讨论】:

  • 您好,我的 pom.xml 文件中没有太多内容。这就是它的全部:pastebin.com/Hwf246dS
  • 确实如此。这显然不是元空间的问题,而是堆的问题,以及应用程序加载的内容
猜你喜欢
  • 2020-11-01
  • 2020-11-23
  • 2013-05-30
  • 1970-01-01
  • 2017-11-02
  • 2019-03-18
  • 2013-08-07
  • 2015-04-15
  • 2019-11-01
相关资源
最近更新 更多