2016-06-14 2 views
1

Runtime.getRuntime().exec(...);으로 생성 된 Process의 Java 메모리의 현재 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

이 서버는 유닉스에 있습니까? –

+0

@SamuelToh 그는 cmd.exe를 실행하여 Windows –

+0

은 현재 실행 중이며, 현재 내 컴퓨터의 Windows에서 실행 중이며 앞으로는 Centos 및 Windows 서버에서 실행됩니다. – IcyRelic

답변

0

당신은 systeminfo를 실행하려고 할 수 있지만, 실제로는 Java에서 실행하지 말고 다른 도구 (당신은 nagios를 사용할 수 있습니다)를 OS에서 실행하는 방법을 고려해야합니다. 모니터링은 실행중인 앱에 종속되지 않습니다.

+0

여러 게임 서버용 제어판을 만들었으므로 제어판 내에서 관리해야합니다. – IcyRelic

2

Bukkit은 이미 완벽하게 맞는 monitoring and managing Minecraft server performance에 대한 사용자 정의 플러그인을 제공합니다.

일반적으로 Java Melody 또는 JMX 콘솔을 사용하여 응용 프로그램 서버 프로세스를 모니터링합니다. built-in VisualVM으로 계측 및 모니터링 할 수도 있습니다.

+0

훌륭한 솔루션처럼 들립니다. +1 +1 –

+0

게이밍 제어판을 만드는 중입니다. 플러그인을 추가하면 나에게 유용합니다. – IcyRelic

관련 문제