1

私は一種のSMTPプロトコルに取り組んでいました.Javaで作成し、正常に実行しました。私のラップトップでは約 20 ~ 30 MB を消費していました。その後、プロトコルをインターネット上で公開することにしました。サーバー(VPS)、ドメインを購入しました。それは私に多くの費用がかかりました。しかし、そのサーバーで自分のプログラムを実行しようとしたとき、自分のプログラムが実行しているクラスごとに約 800 から 900 MB を消費していたことに非常にショックを受けました。私のプログラミングのせいかもしれないと思いました。問題から回復するために多くのことを試みましたが、できませんでした。その後、私の友人が、同じサーバーで単純な Hello ワード プログラムをテストするように勧めてきました。私は、そのプログラムでさえ合計 RAM の最大 900 MB を消費していたことに非常にショックを受けました。

それはどのような問題でしょうか?それらのサーバー、またはそれらのOSとカーネルのバージョンに問題がありますか? Linuxカーネルまたは古いLinuxカーネルを使用したJVMの問題ですか。古い JVM でも試してみましたが、役に立ちませんでした。:(

Linux の一般的なフレーバーのほとんどを試しましたが、すべての Linux フレーバーで同じように機能し、まったく同じ問題がありました。すべてのケースで巨大なメモリを消費していました。(それらはすべて Linux カーネル 2.6.xx を持っていました)

しかし、それは非常にスムーズに機能し、ラップトップで予想されるメモリを消費しました. (約 30 ~ 50 Mb)。ラップトップで Linux を使用しています。しかし、違いは、私のカーネルが 3.1.xx を超えていることです。それは問題でしょうか?私は自分のサーバーの動作に本当にがっかりしており、多くのお金を失いました. 可能な解決策を誰か教えてください。それは Linux カーネルの問題でしょうか、それとも私のプログラミングの問題でしょうか。

4

1 に答える 1

0

お使いのラップトップは Windows を実行していますか? 答えはイエスだと思います。Windows タスク マネージャーで報告されるメモリ値は、Linux が報告する総常駐メモリとは異なります。

Hello World が 900 MB を占めているとは思えません。そうであれば、アプリではなく、JVM メモリが報告されていることがわかります。

Tomcat や JBOSS などの Java EE アプリ サーバーでこのアプリを実行していますか? それは実際に非常に大きな違いを生むでしょう。

最良のアドバイスは、SO を検索して、nmap などの Linux ツールを使用してメモリが消費されている場所を特定する方法を示した他の質問を探すことです。

于 2013-03-24T18:25:25.750 に答える