java - 我的应用程序内存泄漏?代码中的垃圾收集是一种好的做法吗?

标签 java spring-mvc garbage-collection

我正在使用 Spring 3.1 + Jetty 8.1.2 + Eclipse (Juno) 开发 Spring Web 应用程序。

我注意到,当应用程序运行时,每次运行都会快速消耗内存,并且即使在我停止运行它之后也不会下降。

因此,根据我的研究,我插入了

jlibs.core.lang.RuntimeUtil.gc();

在我的代码处理用户请求的末尾。这行代码阻止内存使用量上升,并且内存使用量始终很低。

我的问题:

  1. 您觉得我的应用程序有内存泄漏吗?

  2. 在代码中运行垃圾收集是一种好的做法吗?垃圾收集的最佳实践是什么(总体设计或 Spring 的情况)?

感谢您的帮助!

最佳答案

如果您的应用程序可以收回内存,那么这肯定不是内存泄漏。没有理由担心内存使用情况。

调用 System.gc() 没有任何意义,因为垃圾收集会在需要时执行此操作。如果内存使用量没有达到 Xmx 的限制,那么垃圾收集器就没有理由担心自己。

除非您遇到OutOfMemoryError,否则不必担心 RAM 使用情况。如果您想使用更少的 RAM,则减少分配给 JVM 的数量 - 减少 Xmx

关于java - 我的应用程序内存泄漏?代码中的垃圾收集是一种好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15865983/

相关文章:

android - 应用程序 UI 因 GC 消息而卡住

java - TextRank 运行时间

java - 如何在Java正则表达式中限制多个空格?

java - PDF Box - 无法重命名或删除文件

java - 如何在未使用 XML 配置文件配置的 Spring 应用程序中激活 JSR-250 注释?

.net - 为什么对象一旦超出范围就不会被清理?

Java 类路径 jdbc 问题

java - 如何在rest api中编写自定义验证?

java - 更改 REST API 响应中的字段名称

android - 用于同步的空引用(监视器输入)