1

このアプリケーションの実行中にセッションを閉じると、どのような影響があり、これが本番環境に移行した場合に問題があります。

運用サーバーで 2 つの問題に直面しており、アプリケーションの使用中に起動するだけで約 800MB のメモリを大量に消費します。

しばらくすると、メモリ不足エラーが発生し、サーバーがクラッシュします

アプリケーションのデプロイにTomcatサーバーを使用しています

私のコードはこれです

@Transactional
public Collection list(String queryString, Object[] value) throws Exception {
  Session session = this.sessionFactory.getCurrentSession();
  Query query = session.createQuery(queryString);
  return query.list();
}

@Transactional
public Collection list(String queryString, Object[] value) throws Exception {
  Session session = this.sessionFactory.openSession();
  Query query = session.createQuery(queryString);
  return query.list();
}

セッションを閉じると、遅延初期化により、セッションが既に閉じられているというエラーが発生します。

この問題を解決するのを手伝ってください。春の設定で休止状態で開いているセッションを処理する方法私は休止状態 3.6.1 と春 3.0.6 を使用しています。

4

1 に答える 1

1

VM引数をサーバーに追加して、メモリ不足エラーを回避します

-Xms256m -Xmx1024m -XX:+DisableExplicitGC -Dcom.sun.management.jmxremote
-XX:PermSize=256m -XX:MaxPermSize=512m

そして追加

@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)

Session オブジェクトを気にせずに厳密にトランザクションを処理するメソッドの上のコード

于 2014-06-09T10:38:30.717 に答える