我正在使用 Spring 3.1 + Jetty 8.1.2 + Eclipse (Juno) 开发 Spring Web 应用程序。
我注意到,当应用程序运行时,每次运行都会快速消耗内存,并且即使在我停止运行它之后也不会下降。
因此,根据我的研究,我插入了
jlibs.core.lang.RuntimeUtil.gc();
在我的代码处理用户请求的末尾。这行代码阻止内存使用量上升,并且内存使用量始终很低。
我的问题:
您觉得我的应用程序有内存泄漏吗?
在代码中运行垃圾收集是一种好的做法吗?垃圾收集的最佳实践是什么(总体设计或 Spring 的情况)?
感谢您的帮助!
最佳答案
如果您的应用程序可以收回内存,那么这肯定不是内存泄漏。没有理由担心内存使用情况。
调用 System.gc() 没有任何意义,因为垃圾收集会在需要时执行此操作。如果内存使用量没有达到 Xmx
的限制,那么垃圾收集器就没有理由担心自己。
除非您遇到OutOfMemoryError
,否则不必担心 RAM 使用情况。如果您想使用更少的 RAM,则减少分配给 JVM 的数量 - 减少 Xmx
。
关于java - 我的应用程序内存泄漏?代码中的垃圾收集是一种好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15865983/