0

私はTomcatベースのサーブレットを持っています。サーブレットには、アノテーション クラスに基づく mvc があり、次のようになります (疑似コード)

@RequestMapping("/myAction")
public String getAction(Model m) {
     DBConnection conn = new DBConnection();//connect to DB
     Result r = conn.getDataOfAction();//run some sql query and return result
     ArrayList<POJO> list = r.getResult();//24 instances of class, for example
     m.put("list",list); //It's for resolving pojo into JSP page
     String result = CustomViewResolver.getString(viewName, list);//i just point to ViewName and get parsed jsp page
     //list.clear();
     return result;
}

そのままコメントでプロファイリングを開始すると//list.clear()POJOページがクライアント側で既にレンダリングされた後でも、すべてがメモリに残る状況があります。forEach タグを指すものを除いて//list.clear()、すべてのガベージが収集されたときにコメントを解除すると。POJOjstl

ここに画像の説明を入力

Stream's私はすべてをフラッシュして閉じましWriter'sたが、問題はないようです。それは通常の方法でリストをクリアしますか、それとも何か間違っていますか? ありがとう。

UPD:使用するときに他の状況を試しますjstl

    <c:forEach items=${POJOLIST} var="pojo"></c:forEach>

すべてpojo's記憶に残ります。しかし、を使用せずに印刷すると${POJOLIST}、すべての pojo ガベージが好きなように収集されます。のオブジェクトを再作成してメモリに保持しますか?jspjstljstlvar

4

3 に答える 3

0

@SessionAttributeを使用するか、セッションを手動で管理する場合、「オブジェクトコマンド」はセッションに留まります。したがって、コントローラーの使用が終了したら、アクションが完了し、Sessions変数が使用できなくなり、クリーンアップの準備ができていることをコントローラーに通知する必要があります。

@RequestMapping("/myAction")
public String getAction(Model m, SessionStatus status) {
     ....
     m.put("list",list); 
     status.setComplete(); //tells the controller you're done with your actions and will clean all sessions variables
     return view;
}
于 2013-01-25T16:09:52.877 に答える
0

私は最近同じ問題を経験しました。私は長い間問題を解決するためにグーグルをしてきました..最後にin に設定enablePoolingすることで解決しました。(パラメーターのデフォルト値は true です。)false$TOMCAT_HOME/conf/web.xml

<init-param>
    <param-name>enablePooling</param-name>
    <param-value>false</param-value>
</init-param>
于 2016-11-03T06:55:01.810 に答える
0

これは、アプリケーションのプロファイリング中に発生した問題です。が web.xml jsp サーブレットでデフォルトでオンになっているため enablePooling、オブジェクトは期待どおりに解放されません。唯一の解決策は、enablePooling をオフにすることです。発生したこれらの 2 つのバグを見てください。

https://issues.apache.org/bugzilla/show_bug.cgi?id=25623

https://issues.apache.org/bugzilla/show_bug.cgi?id=16001

于 2013-10-22T20:08:07.543 に答える