2

在 Weblogic 12c 下运行的应用程序在启动的后期阶段对 PermGen 空间进行了极其大量但临时的使用。我说“临时”是因为它表现出“锯齿状”增长到 PermGen 限制(500MB),然后立即下降到几乎恒定的基本水平(大约 300MB),如下图所示:/|/|/| . 经过大约 5 次冗长的迭代后,恢复正常启动。

在打开“-verbose:class”的情况下运行,我们看到在此行为期间没有加载或卸载任何类。

PermGen 的什么用途可能会表现出这组症状?我所能想到的是,由于某种未知的原因,正在创建大约 1 GB 的实习字符串,然后进行垃圾收集。

更新 这是在 Solaris HotSpot 1.7 上运行的。 Java 7 中不包含字符串。

更新 2 这似乎是尝试加载由 ServletContextInitializer 处理的类的问题,可能是特定于 WebLogic 的。我们没有任何 ServletContextInitializers,也没有我们的任何库——它必须是基本 WebLogic 类加载器空间的一部分。里面有很多。我猜想 ServletContextInitializer 上的 @HandlesTypes 正在标记的某个类使用的基类、接口或注释的 NoClassDefFound 错误处理存在错误。

4

0 回答 0