スレッドローカルアプローチを使用して、アプリケーションスレッドごとにjsonシリアライザーを設定し、シリアル化するたびにオブジェクトが作成されないようにしています。
私が使用しているコードは次のコードです。
public class JsonSerializerFactory {
private static final ThreadLocal<JsonSerializer> JSON_SERIALIZER =
new ThreadLocal<JsonSerializer>() {
@Override
protected JsonSerializer initialValue() {
return new JsonSerializer();
}
};
public static JsonSerializer get() {
return JSON_SERIALIZER;
}
}
シリアライザーを取得するたびに、次のことを行います。
JsonSerializerFactory.get()
Tomcatをシャットダウンすると、次のログが表示されます。
May 23, 2012 9:15:25 AM org.apache.catalina.loader.WebappClassLoader clearReferencesThreads SEVERE: The web application [] appears to have started a thread named [Logback AsyncAppender Dispatcher [Async_Logger] - Thread-16] but has failed to stop it. This is very likely to create a memory leak.
Tomcatのメモリリーク保護を読みましたが、おそらくそこに何かが欠けています。本当にリークがありますか、それともこのメッセージを無視する必要がありますか?
誰か説明してもらえますか?
Tomcatスレッドプールの動作を強化する方法をご覧ください