当前位置: 首页 > 知识库问答 >
问题:

Micronaut应用程序内存问题

平和雅
2023-03-14

我正在尝试使用micronaut创建内存开销较低的微服务。从使用micronaut开始,我遇到了一些问题,启动时内存开始变低,但加载时内存膨胀,无法恢复。

我正在用一个小应用程序测试它,该应用程序从Rest调用中获取一个项目,做一些工作,模拟内存峰值,并将结果存储在数据库中。如果我运行jar文件,应用程序从大约170mb的内存开始,在诱导的峰值位于大约700mb之后。本机映像具有类似的结果,尽管启动内存较低。使用xms和xmx数字确实有助于jar版本在尖峰后恢复,尽管它会导致本机映像在尖峰期间崩溃。

这是micronaut的问题吗?我能帮它恢复记忆吗?

下面是我的测试和结果

使用micronaut。io/launch使用kotlin、gradle和graalvm插件创建Java11应用程序。我还使用了gradle插件来构建应用程序和本机映像。

java-jarbuild/docker/layers/application。jar

启动

扣球时

尖峰后(包括gc调用)

对于本机映像,只有系统内存

/生成/本机映像/应用程序

共有1个答案

单于淇
2023-03-14

这是micronaut的问题吗?

对于提供的信息很难说,但您的评论“似乎大部分问题是我使用的数据库库sql2o”表明可能不是。

我能帮它恢复记忆吗?

您可以使用像YourKit这样的运行时探查器来跟踪消耗内存的内容,并使用这些信息来确定优化应用程序消耗内存的机会。您可能需要更改的内容的细节取决于您是否知道系统开始消耗内存的原因。

 类似资料:
  • 我是否正确理解了客户端模式的文档? 客户端模式与驱动程序在应用程序主程序中运行的集群模式相反? 在客户端模式下,驱动程序和应用程序主程序是独立的进程,因此+必须小于计算机的内存? 在客户端模式下,驱动程序内存不包括在应用程序主内存设置中吗?

  • 日安,我是tarantool的新手,我有一个关于tarantool内部客户端应用程序内存限制的问题,我有3亿个项目的内存数据库和选择其中一部分的lua应用程序,在选择我将结果包装为“类”后,从代码中进行更简单的交互。例如: 使用方法: 在大多数情况下,它在第一次运行时运行成功,但在第二次运行时,它以100%的概率失败,并显示消息(tarantool消息): 我知道,内存使用(非释放内存)存在问题,

  • 我一直在找这样的东西。 拥有此micronaut应用程序代码 如何将Spring的ApplicationContext与Micronaut的ApplicationContext合并。 问候

  • 问题内容: Tomcat 5.5.x和6.0.x Grails 1.6.x Java 1.6.x OS CentOS 5.x(64位) VPS服务器,内存为384M JAVA_OPTS:尝试了许多组合-包括以下内容 出口JAVA_OPTS =’-Xms128M -Xmx512M -XX:MaxPermSize = 1024m’ 导出JAVA_OPTS =’-server -Xms128M -Xmx

  • 我目前正在Jetty中运行一个Grails应用程序。它运行良好,但占用的内存比我想要的多。 显示Jetty正在运行,如下所示: 在我看来,Jetty可能使用的最大内存应该是。相反,它看起来是这样的: 显然,我不会期望内存使用量正好是320 MB,但难道不应该接近吗?为什么会是预期内存的两倍?如果有的话,那么当堆填满时,Java难道不应该拒绝分配更多的空间吗? 我试着详细了解是怎么回事,但在我看来,

  • 我正在设置micronaut应用程序,但部署失败,出现以下异常: 我们有3个环境:开发,测试和生产。它在开发和测试中工作,但不在生产中。我们验证了环境变量和jdk版本。我们在云环境中,相同的映像正在部署在开发、测试和生产中。 NA