Hãy thử di chuyển trình điều khiển Oracle JDBC vào thư mục lib của Tomcat thay vì nằm trong thư mục lib của ứng dụng. Có vẻ như OracleDiagnosabilityMBean đang xử lý Catalina.
Chỉnh sửa:Vì bạn không có quyền kiểm soát Tomcat, hãy cố gắng bọc nơi các lớp Oracle đang được tải như vậy (ngoại trừ thay thế AppContext cho Oracle init của bạn):
http://cdivilly.wordpress.com/2012/04/ 23 / Permgen-memory-Rò rỉ /
//somewhere in application startup, e.g. the ServletContextListener
try {
final ClassLoader active = Thread.currentThread().getContextClassLoader();
try {
//Find the root classloader
ClassLoader root = active;
while (root.getParent() != null) {
root = root.getParent();
}
//Temporarily make the root class loader the active class loader
Thread.currentThread().setContextClassLoader(root);
//Force the AppContext singleton to be created and initialized
sun.awt.AppContext.getAppContext();
} finally {
//restore the class loader
Thread.currentThread().setContextClassLoader(active);
}
} catch ( Throwable t) {
//Carry on if we get an error
LOG.warning("Failed to address PermGen leak");
}