1

私は同じコンピューターでJavaゲームサーバーとゲームクライアントを実行しています

ゲームクライアントと

java -Xms512m -Xmx1024m -cp etc etc

とゲームサーバー

java -Xmx1024M -Xms1024M -jar etc etc

コンピューターのプロパティ:

  • Windows764ビット
  • 8GBのRAM
  • CPU i5-2500 @ 3.3GHz
  • IntelHDグラフィックス

問題:ゲームクライアントで深刻な遅延が発生します。ゲームサーバーでもLAN経由で接続されており、ラグの問題はありません。

Java仮想マシンで何かをするための遅れの問題はありますか?マシンのインスタンスを1つまたは2つ使用していますか?

パフォーマンスを最適化するために別の設定をすることはできますか?

問題は、1台のマシンが実行されていて、その最大メモリが両方のインスタンスに十分ではないという事実に関係していると思いますが、それを解決する方法はよくわかりません。

編集:アプリのメモリが不足することはありません。


解決策

1:Javaバージョンを次の場所から更新しました:

java version "1.6.0_31"
Java(TM) SE Runtime Environment (build 1.6.0_31-b05)
Java HotSpot(TM) 64-Bit Server VM (build 20.6-b01, mixed mode)

java version "1.7.0_15"
Java(TM) SE Runtime Environment (build 1.7.0_15-b03)
Java HotSpot(TM) 64-Bit Server VM (build 23.7-b01, mixed mode)

2:要件を最小限に抑えるためにサーバーのプロパティを変更しました。これが、主な理由のようです。

3:メモリの増加:game- clientwithjava -Xms1024m -Xmx1024m -cp etc etc とgame- java -Xmx2048M -Xms2048M -jar etc etc serverServerは現在約700MBで実行されています。

4

2 に答える 2

2

Java仮想マシンで何かをするための遅れの問題はありますか?

おそらく。いずれかの方法を確認するのに十分な証拠を提示していません。

不可解なことは、別のマシンで実行されているクライアントが遅れていないことです。

マシンのインスタンスを1つまたは2つ使用していますか?

のコピーを2つ実行javaすると、JVMが2つになります。

パフォーマンスを最適化するために別の設定をすることはできますか?

答えはおそらくイエスです。しかし、あなたは私たちが確かな提案をするのに十分な情報を提供していません。


遅延は、次のような多くの原因で発生する可能性があります。

  • 待ち時間の長いネットワーク。
  • ヒープが小さすぎるJVM。
  • 大量のガベージを生成し、過剰な数のガベージコレクションをトリガーしているアプリケーション。
  • リソースをめぐって競合するアプリケーションの組み合わせ。例:物理メモリ、CPU時間、ディスクまたはネットワークI/O時間。

問題の根本原因を突き止める場合は、上記のどれが問題である可能性が高いかを判断するために、監視を行う必要があります。タスクマネージャなどを使用して、システムがCPUにバインドされているか、メモリが不足しているか、大量のディスクやネットワークを実行しているかなどを確認します。VisualVMを使用して、JVM内で何が起こっているかを確認します。


または、まったく非科学的な「ノブをいじる」ことで修正を試みることもできます。

  • -Xmsパラメーターと-Xmxパラメーターを同じにしてみてください(これにより、開始時の遅延が減少する可能性があります...)
  • JVMのヒープのサイズを増やしてみてください。たとえば、1GBではなく2GBにします
  • 最新バージョンのJavaを使用してみてください
  • ヒープサイズをさらに増やすことができるように、64ビットJVMを使用してみてください
  • CMSまたはG1コレクターを有効にしてみてください(使用しているJVMのバージョンによって異なります)。

あなたが現在使用しているものについてもっと知っていれば、もっと具体的な提案をすることができるかもしれません...

于 2013-03-03T01:15:42.610 に答える
1

同じコンピューターで2つのJavaアプリを使用しているため、2つのJVMが実行されています。8GBのRAMを搭載した64ビットシステムの場合、パフォーマンスを向上させるために、JVMに最大2GB(物理メモリの25%または最大2GBの空き物理メモリの75%)を使用することをお勧めします。

JVMサイズの調整を検討する必要があるかもしれません。パフォーマンスを向上させるために、XmsとXmxのサイズを最大サイズのブラケットで同じに保つことができます。

ヒープにメモリサイズを割り当てることだけが考えられる領域ではありません。JVMは、ヒープだけでなく、より多くのメモリを使用します。スレッドスタック、メソッド領域、クラスローダーサブシステム、ネイティブメソッドスタックなどの他のメモリ領域。両方のアプリ(ゲームサーバー、ゲームクライアント)の実行中に、両方のアプリ間のOSによるメモリ管理に問題が発生する可能性があります。 、結果として速度が低下します。その場合、クライアントアプリは、可能な場合は別のコアにデプロイできます。

于 2017-03-08T11:49:25.330 に答える