2016-12-16 38 views
-1

カスタマイズデバイスボード上のjetty runnerの助けを借りてJAVA Webアプリケーションを実行しています。デバイスボードには "SWAP disable" [RAM of 1GB]のような制限がありますので、jettyでJAVA Webアプリケーションを起動するたびに、メモリ消費量は徐々に350MBから900MBになります。 私たちがテストアプリケーションを実行しようとすると、私たちのアプリケーションが必要なライブラリ - websocket、jersey libraries、pdfbox、opencsv]を使って単純なHTMLページを実行しようとすると350M-900MBのメモリ消費があります。Jetty Server:メモリ消費の問題。

私たちの必要条件は、メモリ消費量がJava Webアプリケーションによって400MBを超えてはならないということです。この問題に関する提案または解決策が必要です。 jettyサーバーまたはライブラリにメモリリークがありますか?

+0

私はいくつかの "ラボ"環境でそのソフトウェアスタックを実行しようとします...そして、よく、いくつかのメモリプロファイリングを行います。 – GhostCat

+1

* "jettyサーバーまたはライブラリにメモリリークがありますか?" - おそらく、リークがWebアプリケーションにある可能性が高くなります。そこに探してみましたか? –

+0

私たちは単純なhtmlページでアプリケーションをテストしましたが、コードはそのままで同じコードを使用しています。 – prashantr

答えて

0

Jetty 8 is EOL (End of Life)。アップグレードを検討してください。

amqp-client-3.5.3.jar 
protobuf-java-2.5.0.jar 
gson-2.2.2.jar 
jaybird-full-2.2.8.jar 
jackson-core-asl-1.9.13.jar 
jackson-jaxrs-1.9.13.jar 
jackson-mapper-asl-1.9.13.jar 
jackson-xc-1.9.13.jar 
javax.annotation-api-1.2.jar 
javax.el-3.0.1-b08.jar 
javax.inject-1.jar 
javax.inject-2.2.0.jar 
javax.servlet-api-3.1.0.jar 
javax.ws.rs-api-2.0.jar 
jersey-client-2.6.jar 
jersey-common-2.6.jar 
jersey-container-servlet-2.6.jar 
jersey-container-servlet-core-2.6.jar 
jersey-guava-2.6.jar 
jersey-media-json-jackson-2.6.jar 
jersey-server-2.6.jar 
jetty-http-8.1.17.v20150415.jar 
jetty-io-8.1.17.v20150415.jar 
jetty-schemas-3.1.M0.jar 
jetty-util-8.1.17.v20150415.jar 
log4j-1.2.17.jar 
log4j-api-2.3.jar 
log4j-core-2.3.jar 
org.eclipse.jdt.core-3.8.2.v20130121.jar 
osgi-resource-locator-1.0.1.jar 
slf4j-api-1.6.6.jar 
slf4j-log4j12-1.6.6.jar 
validation-api-1.1.0.Final.jar 
websocket-api-9.3.14.v20161028.jar 
websocket-servlet-9.3.14.v20161028.jar 
pdfbox-app-2.0.0-RC1.jar 
opencsv-3.7.jar 

物事が解決する:

は桟橋のバージョン(または任意のアーティファクト)ライブラリの

あなたの規定のリスト(あなたが知っている、あなた自身の質問を編集することができます)を混ぜることはありません

  • Jettyには9.3.xと8.1.xの2つのバージョンがあります(1つを選択、9.3.xを提案)
  • あなたはjavax.injectの2つのバージョンを持っています:1.xと2.x(1つを選択)
  • log4jのバージョンは1.2.xと2.3の2種類あります(1つを選択し、1.2をあなたのslf4j-log4j12.jarライブラリその1)
  • あなたは
  • org.eclipse.jdt.core.jarが桟橋8上のJSPのコンパイルのためにある古くなった桟橋-schemas.jarここを(使用しているを使用しているその
  • の場合)あなたのクラスパスに見ることが不適切OSGiを使用していない場合は、osgi-resource-locator.jarを削除してください。

上記のライブラリがWebAppのWEB-INF/libの場合、次のjarはがウェブアプリケーションではなくサーバクラスパスに属しているので、WEB-INF/libに存在しないようにする必要があります。を削除する必要があります。

javax.annotation-api-1.2.jar 
javax.el-3.0.1-b08.jar 
javax.servlet-api-3.1.0.jar 
jetty-http-8.1.17.v20150415.jar 
jetty-io-8.1.17.v20150415.jar 
jetty-schemas-3.1.M0.jar 
jetty-util-8.1.17.v20150415.jar 
org.eclipse.jdt.core-3.8.2.v20130121.jar 
websocket-api-9.3.14.v20161028.jar 
websocket-servlet-9.3.14.v20161028.jar