gpt4 book ai didi

java - 重新安装应用程序时内存消耗增加

转载 作者:行者123 更新时间:2023-12-01 20:19:28 27 4
gpt4 key购买 nike

我的 EAR 应用程序可以在 Windows 7 PC 上安装的 WAS 8.5.5.5 上成功运行。要安装新版本的应用程序,我使用 maven-antrun-plugin ,它只需将新构建的应用程序复制到服务器的 monitoredDeployableApps 文件夹中。卸载旧应用程序版本并成功安装新版本后。

但是!当我查看任务管理器时,我注意到 java 进程(服务器)的内存消耗增加了约 150-200 mb。接下来的每次更新都会执行相同的操作,直到最终应用程序出现 OutOfMemoryError

服务器的Xmx设置为1024mb,但当它死掉时,内存消耗达到~2GB。

我还尝试使用 http://gceasy.io 来分析详细的 gc 日志。它告诉我GC间隔平均时间4秒771毫秒。所以我可以得出结论,GC 经常启动,但无论如何都没有帮助。

问题是 - 为什么每次我重新安装应用程序时内存消耗都会上升并且永远不会下降?

提前谢谢您!

最佳答案

应用程序重新启动时的内存增长是类加载器泄漏的标志之一 - 如果应用程序外部的某些代码持有对应用程序类的引用,则会阻止整个应用程序的类加载器被垃圾收集(因为所有类都引用它们的类)类加载器)。 150MB 对此来说非常大,但也可能有其他东西被保留。

如果您的应用程序正在创建自己的线程,那么这些问题的一个重要根源是通过对应用程序类的引用或通过将类加载器作为其线程上下文类加载器的线程。确保清除应用程序停止时创建的所有线程。它也可能是 WebSphere 组件中的错误(某些东西无法自行清理)或者您的应用程序或第三方库中的问题(可能在 JVM 级别设置一些引用)。

WebSphere 8.5 有一些功能可以检查特定类型的泄漏,如本知识中心文章中所述:https://www.ibm.com/support/knowledgecenter/SSAW57_8.5.5/com.ibm.websphere.nd.doc/ae/ttrb_configmemleak.html

关于java - 重新安装应用程序时内存消耗增加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45165373/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com