私はこのOutOfMemoryErrorを追跡しようとしていて、本当に悪い時を過ごしています。私のアプリケーションは、アーキテクチャ部分と、Hibernateが作成したデータベースCRUD操作を含むいくつかの基本的なREST WSを公開するモジュールに分割されています。主なアーキテクチャは、プロパティと構成のロギングと管理の唯一の役割を持っています(これはすべてSpringによって処理されます)。OutOfMemoryErrorをトラッキングする
アプリケーションはまだまだ素晴らしいことをしていませんが、Tomcat 7で2-3回の再デプロイを行った後もOutOfMemoryErrorが発生しています。 []の周り
あなたが見ることができるように、私は文字列の多くを抱えている、[] char型とバイト:私は、ヒープ・ダンプを行い、VisualVMのでそれを開いて、これは私が見たものであるしました。ロガーは、この原因ではない場合、それはいくつかの春/休止状態/ Tomcatに起因する可能性が
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest httpServletRequest = (HttpServletRequest) request;
HttpServletResponse httpServletResponse = (HttpServletResponse) response;
Map<String, String> requestMap = this
.getTypesafeRequestMap(httpServletRequest);
BufferedRequestWrapper bufferedRequest = new BufferedRequestWrapper(
httpServletRequest);
BufferedResponseWrapper bufferedResponse = new BufferedResponseWrapper(
httpServletResponse);
final StringBuilder logMessage = new StringBuilder(
"REST Request - ").append("[HTTP METHOD:")
.append(httpServletRequest.getMethod())
.append("] [PATH INFO:")
.append(httpServletRequest.getRequestURI())
.append("] [REQUEST PARAMETERS:").append(requestMap)
.append("] [REQUEST BODY:")
.append(bufferedRequest.getRequestBody())
.append("] [REMOTE ADDRESS:")
.append(httpServletRequest.getRemoteAddr()).append("]");
long startTime = System.currentTimeMillis();
chain.doFilter(bufferedRequest, bufferedResponse);
long elapsed = System.currentTimeMillis() - startTime;
logMessage.append(" [RESPONSE:")
.append(bufferedResponse.getContent())
.append("] [ELAPSED TIME:").append(elapsed).append("ms]");
log.debug(logMessage.toString());
}
:本当にこの種のデータを操作するだけで、クラスは、サーブレット・フィルターはこれだけをやっているロガーです/私が気付いていないいくつかの図書館?
Springの設定と同じように他のものが必要な場合は、お気軽にお問い合わせください。
ありがとうございました!
tomcatのメモリ設定(Xmx、PermSize)は何ですか? –
起動時にアプリケーションサーバーとしてのTomcatを使用しているときに、Webアプリケーション用にさらにメモリを割り当てようとしましたか?また、「dominatorオブジェクト」が多数の参照を作成して保持しているかどうかを調べるようにしてください(私はHibernateが原因である場合に遭遇しました)。 – dumitru