我们正在尝试启动 HP UX 服务器以在 Java 中运行一些批处理作业。简而言之,问题是这样的:
这些批处理作业在 Jeus Application Server(韩国制造的产品)上运行。尽管大多数作业都按时运行,但一些 Batch Jobs 报告了著名的 PermGen Out of Memory Error。我们得到一个堆转储并开始查看 JVM 选项。它们如下: Xms - 2048m Xmx - 2048m PermSize - 512m MaxPermSize - 512m。旧的 GC 收集器是 CMS,而年轻代收集器是 Parallel Collector。
我们注意到实际的堆大小非常好,并且 PErm Gen 用完了所有 512m 的内存。HPJmeter 显示这是内存的逐渐增加,因此我们怀疑内存泄漏。我们查看了所有的类加载器,大约有 168 个核心 Jeus App Server 类加载器实例。内存泄漏估计器显示此类加载器正在泄漏内存。它显示保存的字节数只有 3MB 左右。
我们查看了这个类加载器加载的类/类型的数量,大约有 512 个项目。内存泄漏还显示了一些其他对象与内存泄漏有关。
我有以下问题:
- 现在已经识别出泄漏的 Classloader,我们如何识别导致问题的确切引用?
- 如果一个具有特定对象 id 的类加载器显示为内存泄漏,那么同一类加载器的其他实例是否有可能泄漏一些不同数量的内存?
- 任何关于下一步做什么的指导将不胜感激。
阿迪亚。