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

Spring(静态编程语言)应用程序运行时的内存消耗行为

姬向明
2023-03-14

图像显示了内存和CPU消耗随时间的变化。开始时,我运行了一个渗透测试,结果CPU使用率很高,内存不断增加。令我困惑的是,即使应用程序空闲,内存使用率也不会再减少。

这是正常行为还是应用程序有问题?

共有1个答案

习海
2023-03-14

这是正常行为还是应用程序有问题?

没有更多的信息,这是不可能的。

这可能是正常行为。JVM中的内存通过垃圾收集释放。垃圾收集器清理不再使用的对象。它有自己的规则来决定何时以及如何这样做。特别是,当应用程序需要时,它会尝试释放内存。如果应用程序处于空闲状态,并且不需要任何内存来分配新对象,则垃圾收集器可能不会运行。

另一方面,可能是您的应用程序仍保留对某些数据的引用,从而防止其被垃圾收集。如果应用程序中有任何变量或数据结构仍保留对对象的引用,则该对象不会被垃圾收集。随着时间的推移,这最终意味着垃圾收集器将无法释放任何新内存,应用程序将崩溃。

如果您想确定,您应该尝试多次运行您的测试。如果您的应用程序运行良好,您将看到内存图表在堆开始充满时立即下降,然后再次逐渐上升。这导致了一个特征性的“锯齿”内存使用图表。

 类似资料:
  • 为了在Eclipse中创建我的第一个简单Kotlin项目,我遵循了从Kotlin官方网站开始使用Eclipse Luna教程的步骤,即: 从Eclipse市场安装适用于Eclipse的Kotlin插件 但是,我在Eclipse控制台中经常遇到以下错误: 错误:无法找到或加载主类HelloKt 我仔细检查了我的项目的运行配置,它确实将“Main class”设置为(我100%确定它不存在)。另外,当

  • 我有一个Spring Boot应用程序,以Kotlin为语言,Gradle为构建系统。所以基本上,我试图用应用程序源代码和依赖项构建一个胖jar,可以使用Java命令行工具运行。 Gradle构建脚本: 如果我使用gradle命令运行项目,那么它运行正常。但是当我构建jar并尝试ti运行时,它会抱怨以下错误:- 应用.kt:- 不知道我到底哪里做错了什么。

  • 当结合使用SpringWebFlux和Kotlin协同程序时,我很难理解一个简单的RESTfulWS响应处理场景。假设我们在REST控制器中有一个简单的WS方法,该方法可能返回大量(数百万)响应“things”: 这正如人们所期望的那样:只要使用流媒体类型(例如“application/x-ndjson”),结果就会流式传输到客户端。在更复杂的服务调用中,也考虑了错误/警告的可能性,我希望返回以下

  • 我试图用OkHttp和Cucumber在静态编程语言中设置一个Spring启动项目,并且在运行Cucumber任务时遇到以下错误。如何修复? 还有build gradle kts片段 我看到了这个错误https://github.com/square/okio/issues/647看起来可能是它,并修复了这个build.gradle,我如何将其翻译为kotlinbuild.gradle.kts?

  • 问题内容: 我正在使用FXML中描述的核心组件制作JavaFX桌面应用程序,我想为用户提供更改语言的选项。但是,一旦从FXML加载了组件,我还没有找到任何直接的方法来更改语言。 问题是,有什么标准方法可以处理JavaFX中的语言切换。 问题答案: 你可以做这样的事情。正如您在回答中一样,您可能希望将其实现为单例,或者使用DI框架在需要的地方注入单个实例: 现在,您可以执行以下操作: 而且任何时候您

  • Go语言是编译型的静态语言(和C语言一样),所以在运行Go语言程序之前,先要将其编译成二进制的可执行文件。 可以通过Go语言提供的 或者 命令对Go语言程序进行编译: 命令可以将Go语言程序代码编译成二进制的可执行文件,但是需要我们手动运行该二进制文件; 命令则更加方便,它会在编译后直接运行Go语言程序,编译过程中会产生一个临时文件,但不会生成可执行文件,这个特点很适合用来调试程序。 下面就来演示