2012-03-05 15 views
5

メモリの問題についてあなたの脳を選ぶことはできますか?Java Webアプリケーションのメモリ消費量(300MBが高すぎますか?)

(14000 LOCのように)巨額ではない私のJavaアプリケーションは、約300MBのメモリを使用しています。 TomcatでMySQLデータベースを実行しています。私は、Hibernate、Spring、Velocityを使用しています。

それ以上の成長をせずに、それが安定し、300MBのリークを持っていないようです。 (また、私はいくつかのプロファイリングを行った。)しかし、私のチームからは、使用しているスペースの量について懸念がありました。これは高いようですか?あなたはそれを縮小する方法のための任意の提案がありますか?

ご迷惑をおかけして申し訳ございません。

ジョー

+2

あなたの質問には、私たちが有用な回答を公式化するのに十分な情報が含まれていません。メモリ使用量はLOCに直接リンクされません。あなたがそれらの行で何をしているかによって異なります。私たちは知的に答えることができるように、コードや機能の優れた説明を見なければなりません。 –

+0

私はあなたにどんな情報を提供できますか? – Joe

+0

これを縮小するには、コードを分析する必要があります。それは少なくとも私にとっては不思議なほど高くはありません。私のWebサーバーとEclipse(2つのJavaプロセス)は、1ギガバイトのメモリで動作します。私たちのWebサービスは大量の行ですが、私たちはあなたのウェブサイトにアクセスすることができます... – kand

答えて

4

LOCの数は、Javaアプリが使用しようとしているどのくらいのヒープの指標ではありません。あるものから他のものへの相関はありません。

300MBは、キャッシュデータであるサーバーアプリケーションではそれほど大きくありませんが、キャッシュされたデータやセッションデータを保持していないアプリケーションでは多少大きくなります(ただし、Webサーバー自体を含むため、 )。

2

コードの量(LOC)は、アプリケーションのメモリ使用量にほとんど影響を与えません。結局のところ、メモリの大部分を占める変数とオブジェクトです。私には、300メガバイトはあまり思えませんが、もちろん、それはあなたの特定の使用シナリオによって異なります。

  • 本番サーバがどのくらいのメモリを持っていますか?
  • この量のメモリを使用しているユーザーは何人ですか?
  • ユーザーセッションあたりのメモリ使用量はいくらですか?
  • と同時に何人いると予想されていますか?は本番環境でアプリケーションにアクセスしていますか?

これらに基づいて、いくつかの計算を行うことができます。あなたのプロダクション環境は、あなたが期待するユーザーの量を処理する準備ができていますか、ハードウェアが必要ですか?ディスク/データベースなどのデータをシリアル化する必要がありますか?

0

私は約束できませんが、あなたが心配する必要があると思います。我々は、Glassfishを介して仕事中のいくつかのWebアプリケーションを実行し、休止状態も使用し、それぞれ約800-900MBのデベロッパーを使用し、2つのドメインがそれぞれのサイズで動作することがよくあります。

+0

これらは、2年以上外出しているプロダクションアプリケーションでもあります –

0

フットプリントを減らす必要がある場合は、少なくともVelocity 1.6以上を使用していることを確認してください。 1.5はかなりのメモリを無駄にしていました。