我们有一个 Spring Boot 应用程序,带有 Spring Integration 上下文,从 ActiveMQ 队列中使用。
如果队列中没有消息,它会消耗越来越多的内存,几个小时后我们总是会耗尽内存。
它似乎没有做任何事情,但是消耗的内存(堆)正在以小速度不断增加。
我们如何避免这种情况或至少分析这种情况?
最佳答案
您确定您的代码不会产生内存泄漏吗? 如果您通过 Java VisualVM 连接到您的应用程序并看到如下图片:
100% 确实存在内存泄漏,这不是 Spring 或 Java 问题;)。
我可以建议您阅读这篇有用的文章,了解如何调试此类问题,然后调查您的应用程序:
- https://www.toptal.com/java/hunting-memory-leaks-in-java
- https://www.dynatrace.com/resources/ebooks/javabook/memory-leaks/
- https://dzone.com/articles/memory-leak-andjava-code
- https://blogs.sourceallies.com/2011/07/debugging-memory-leaks-with-visualvm/
- http://blog.rejeev.com/2009/04/analyzing-memory-leak-in-java.html
关于java - Spring Integration 一直消耗更多内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44394455/