0

我正在使用它连接到 HP 应用程序的 Quality Center。我运行一个大型应用程序,内存增加太多,但并没有减少。它使应用程序崩溃。有人有解决方案吗?

谢谢

4

1 回答 1

0

如果您的内存不足,您首先需要开始计算正在使用内存的内容,然后查看它是否应该仍然存在,如果不存在,为什么它仍然存在。

一个很好的起点是使用 jmap 获取堆转储,如本博客所述。堆转储是当前内存中所有内容的转储,因此请准备好至少与分配给 VM 的内存量一样大的文件。

获得堆转储后,可以使用Eclipse Memory Analyzer对其进行分析。这将能够告诉您内存的最大用途是什么,并在阻止事物被垃圾收集的引用链中上下移动。

现在这都是纯 java 的东西,所以如果问题出在 com4j 的本机组件或 com 对象本身,那么这将无济于事,但它可以让您从调查中消除 Java 方面。如果是 com 组件泄漏内存,请尝试在没有 java 端的情况下运行它,看看是否可以单独重现内存泄漏。到那时,您将需要与我刚刚描述的技术等效的 Native / COM,但恐怕我对此一无所知。

于 2012-09-15T04:21:35.970 回答