2016-06-14 6 views
1

Runtime.getRuntime().exec(...);で作成されたJava Processの現在のRAM使用率を取得することは可能ですか?私はminecraftサーバーのインスタンスを作成しており、サーバーのリソース使用量を監視する必要があります。JavaプロセスオブジェクトのMemoryUsage統計を取得する方法

ここでは、プロセスの作成方法を説明します。

private void runStartCommand(){ 
    try { 
     lines = new ArrayList<>(); 
     String cmd = "cmd.exe /c cd " + service.getLocation() + "& java -jar -Xmx2G -Xms2G "+service.getLocation()+"spigot-1.9.2.jar"; 
     process = Runtime.getRuntime().exec(cmd); 
     input = new BufferedReader(new InputStreamReader(process.getInputStream()),8*1024); 
     writer = new BufferedWriter(new OutputStreamWriter(process.getOutputStream())); 
     running = true; 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

} 
+0

このサーバはUnix上にありますか? –

+0

@SamuelToh彼は 'cmd.exe'を実行してWindows –

+0

の下にあります。現在、私のコンピュータ上のWindows上で実行されていますが、将来はCentosとWindowsサーバ上で実行されます – IcyRelic

答えて

0

http://linux.die.net/man/1/dstat

あなたがLinuxである場合、あなたはDSTAT試すことができます。私たちは、CPU、ディスク、RAMの使用量を制御するためにそれを使用します。

+0

この情報をありがとうございますwindowsについてはどうですか? – IcyRelic

0

あなたはsysteminfoを実行しようとすることができますが、実際にはJavaからやっていないが、あなたの監視は、実行しているアプリケーションに依存しません。

+0

複数のゲームサーバー用のコントロールパネルを作成してコントロールパネル内で管理することが不可欠です – IcyRelic

2

Bukkitは既に完全にあなたに合ったmonitoring and managing Minecraft server performanceのカスタムプラグインを提供しています。

通常、アプリケーションサーバープロセスを監視するには、Java MelodyまたはJMXコンソールのようなものを使用します。 built-in VisualVMで計測して監視することもできます。

+0

素晴らしい解決方法のようです。それのために+1 –

+0

私がやっているのは、ゲームコントロールパネルを作って、 – IcyRelic

関連する問題