2016-06-14 75 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

你可以嘗試運行systeminfo,但你應該真的考慮不從Java做它,但在操作系統上運行一些其他工具(你可以使用nagios) - 這種方式您的監控不依賴於您正在運行的應用程序。

+0

我爲多臺遊戲服務器創建一個控制面板,以便在控制面板內對其進行管理至關重要 – IcyRelic

2

Bukkit已經爲monitoring and managing Minecraft server performance提供了一個自定義插件,它可以完美地滿足您的需求。

通常你會使用類似Java Melody或JMX控制檯的東西來監視應用程序服務器進程。您也可以使用built-in VisualVM進行測量和監測。

+0

聽起來像是一個很好的解決方案。 +1它 –

+0

即時消息正在創建一個遊戲控制面板,所以添加一個插件對我有用 – IcyRelic

相關問題