如何获取java Process对象的MemoryUsage统计信息

时间:2016-06-14 05:57:58

标签: java windows

是否可以获取使用Runtime.getRuntime().exec(...);创建的java Process的当前RAM使用率。我正在创建一个minecraft服务器实例,我需要监视服务器的资源使用情况。

以下是我正在创建流程的方法。

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();
    }

}

3 个答案:

答案 0 :(得分:2)

Bukkit已经为monitoring and managing Minecraft server performance提供了一个适合您的自定义插件。

通常,您可以使用Java Melody或JMX控制台等方法来监视应用程序服务器进程。您还可以使用built-in VisualVM来检测和监控它。

答案 1 :(得分:0)

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

如果你在Linux下,你可以试试dstat。我们用它来控制cpu,磁盘的使用

答案 2 :(得分:0)

您可以尝试运行systeminfo,但是您应该考虑不使用Java,而是在操作系统上运行其他工具(您可以使用nagios) - 这样您的监控就不依赖于您正在运行的应用程序。