我在websphere 7中部署的应用程序中遇到了outOfmemory问题。
我正在使用yourKit尝试解决正在发生的事情,我可以看到的一件有趣的事情是,当我第一次启动应用程序时,它会加载大约20k类,并且每次我进行另一次部署(没有重新启动websphere)这个数字增加了2k,堆大小跟随这个增加。
我猜这是根本问题,但我不知道如何解释为什么会这样。
我试图在一次部署之前列出所有类,然后一个接一个地列出所有类,但是由于我无法列出所有20k类(只有10k不知道为什么),所以这并没有很好地工作。当我比较两个列表时,我发现了大约600个新类,这些类确实来自我的应用程序或我的应用程序的依赖项。
我发现我的大多数应用程序类都是枚举和DAO类的实现。
我的应用程序是使用Struts和Spring框架的Java EE 6应用程序。
有什么想法吗?
答案 0 :(得分:1)
OutOfMemoryError
。
如果您遇到的问题是由应用程序的重新部署引起的,那么您可能会遇到PermGen OOME。当应用程序服务器无法从其内存中完全卸载类的定义(内存泄漏)时会发生这些情况。
这种情况很常见(至少根据我的经验),通常开发人员只需增加应用程序服务器的PermGen大小,或者只是退回应用程序服务器以清理PermGen。
答案 1 :(得分:0)
这是典型的类加载器泄漏。这可能是由您的应用程序或运行时中的错误(即WebSphere或JRE)引起的。请注意,WAS 7中有很多,特别是在较旧的修订包中。
您可能需要查阅以下文档以更深入地了解该问题: