sql >> データベース >  >> RDS >> Oracle

ホット再デプロイとOracleデータベースによるPermgenメモリリーク

    Oracle JDBCドライバをアプリケーションのlibフォルダ内ではなく、Tomcatのlibディレクトリに移動してみてください。 OracleDiagnosabilityMBeanがCatalinaを処理しているようです。

    編集:Tomcatを制御できないため、Oracleクラスがロードされる場所をそのようにラップしてみてください(Oracle initのAppContextを置き換える場合を除く):

    http://cdivilly.wordpress.com/2012/04/ 23 / permgen-memory-leak /

    //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");
    }
    


    1. インクリメンタル統計によるパーティションメンテナンスの改善

    2. MySQLユニコードリテラル

    3. FKで行を更新するときのMySQLのパフォーマンス

    4. Postgresqlの複数の列でWHEREINを実行する