1

わかりました iv は、1 台のコンピューターでホストされている多数のゲーム サーバーを維持するのに役立つツールでいっぱいの作業に取り組んできました。私がやっていることは、python スクリプトから .bat ファイルを起動することです。そのbatファイルは、最大メモリなどのサーバーのプラムやその性質のものを設定します。次の関数で .bat ファイルを開いて実行します。

def StartServer(path,file):
    if file not in MK.keys():

        l = Popen(file, cwd=path)
        MK[file]=l
        stdout, stderr = l.communicate()
    else:
        MK[file].terminate()

この関数は、2 つの方法のいずれかで呼び出されます。最初の方法は、プログラムを開始することです。

thread.start_new_thread( StartServer, (path,File, ) )

2番目にプログラムを終了します

StartServer(path,File)

StartServer は再エントリを確認し、指定されたプログラムを終了します...これは、次のようなバット ファイルのように、RAM をほとんど必要としないプログラムに最適です。

@echo Hello world.
@pause

ただし、次のような Java プログラムにより多くの RAM を割り当てようとすると、

@ECHO OFF
SET BINDIR=%~dp0
CD /D "%BINDIR%"
"%ProgramFiles%\Java\jre7\bin\java.exe" -Xmx4096M -Xms4096M -jar Minecraft_RKit.jar user:password
PAUSE

BAT ファイルから次のようなメモリ エラーが発生します。これはpython側ではなくbatファイルからのものです

Invalid mat heap size: -Xmx4096M
The specified size exceeds the maximum representable size.
Error: Could not create java virtual machine.
Error: A fatal exception has occurred. Program will exit.
Press any key to continue . . .

注: Python と Bat ファイルの両方を使用することを好みます。よろしくお願いします!

4

1 に答える 1

0

32 ビット JVM を開始しようとしていますが、32 ビット アーキテクチャには大きすぎるヒープ サイズが与えられています。32 ビット JVM の場合、最大ヒープ サイズは 3Gb 未満です。実際の制限は、OS (アプリケーションが使用できるアドレス空間の量を決定する) と、JVM によって使用されるヒープ以外のメモリの量によって異なります。

最大ヒープ サイズを減らすか、64 ビット JVM (および 64 ビット OS) に切り替えます。

于 2013-04-14T10:55:04.277 に答える