「java查看cpu占用」java查看进程占用内存大小

博主:adminadmin 2023-03-19 01:41:09 434

本篇文章给大家谈谈java查看cpu占用,以及java查看进程占用内存大小对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

java 如何查看服务器的CPU使用率

public static String getCpuRatioForWindows() { 

         try { 

             String procCmd = System.getenv("windir") + "\\system32\\wbem\\wmic.exe process get Caption,CommandLine,KernelModeTime,ReadOperationCount,ThreadCount,UserModeTime,WriteOperationCount"; 

             // 取进程信息 

             long[] c0 = readCpu(Runtime.getRuntime().exec(procCmd)); 

             Thread.sleep(CPUTIME); 

             long[] c1 = readCpu(Runtime.getRuntime().exec(procCmd)); 

             if (c0 != null  c1 != null) { 

                 long idletime = c1[0] - c0[0]; 

                 long busytime = c1[1] - c0[1]; 

                 return "CPU使用率:"+Double.valueOf(PERCENT * (busytime)*1.0 / (busytime + idletime)).intValue()+"%"; 

             } else { 

                 return "CPU使用率:"+0+"%"; 

             } 

         } catch (Exception ex) { 

             ex.printStackTrace(); 

             return "CPU使用率:"+0+"%"; 

         } 

     }

查看Java哪个线程占用CPU资源

以下方法在LINUX下执行通过:

1.先定位占用cpu高的进程

top

2.使用以下命令

ps p 14766 -L -o pcpu,pid,tid,time,tname,stat,psr | sort -n -k1 -r

其中14766是刚才1中cpu占用率高的进程pid

3.2.4 32525 32537 01:58:41 ? Sl 6

0.8 32525 1771 00:43:12 ? Sl 0

0.8 32525 1769 00:39:46 ? Sl 0

0.7 32525 12324 00:33:36 ? Sl 0

0.5 32525 1772 00:27:50 ? Sl 0

0.5 32525 1768 00:25:45 ? Sl 0

0.4 32525 30760 00:19:13 ? Sl 0

0.4 32525 1773 00:22:36 ? Sl 0

0.4 32525 1770 00:20:25 ? Sl 0

0.3 32525 32385 00:00:10 ? Sl 0

0.1 32525 31668 00:00:03 ? Sl 0

0.1 32525 31667 00:00:03 ? Sl 0

0.1 32525 1790 00:07:10 ? Sl 1

其中第3个结果就是此进程中有问题的线程nid

4.通过jstack命令dump出堆栈

"AppController_ThreadPool_L2_Pool Thread" daemon prio=10 tid=0x0000000051c2b000 nid=0x7bb3 in Object.wait() [0x000000005e3c5000]

java.lang.Thread.State: TIMED_WAITING (on object monitor)

at java.lang.Object.wait(Native Method)

at org.company.threadpool.ThreadPoolImpl$PoolThread.run(ThreadPoolImpl.java:142)

- locked 0x00002aaca30341a8 (a org.company.threadpool.ThreadPoolImpl$PoolThread)

其中的nid就是线程的编码,只不过是经过了16进制的转换。

即十进制的31776对应的十六进制)0x7bb3,定位到线程后一切好办。

java windows怎么查看线程占用cpu

1、首先dump出该进程的所有线程及状态使用命令jstackPID命令打印出CPU占用过高进程的线程栈.jstack-l56835683.stack将进程id为5683的线程栈输出到了文件2、使用top命令找到耗cpu的线程使用top-H-pPID命令查看对应进程是哪个线程占

怎么查看java程序运行的峰值内存消耗(含虚拟机)和CPU消耗(ms)

查看java程序运行的峰值内存消耗(含虚拟机)和CPU消耗(ms)的方法:

用jdk自带的工具,jconsole.exe;

令行输入jconsole.exe;

就会出现一个window;

根据进程号选择要监控的虚拟机;

里面有内存、线程、包括各种对象定义占有的内存,都可以看到。

查看JAVA进程中哪个线程CPU消耗最高

一,在centos linux 上查看进程占用cpu过高

top

shift+h

查看哪个进程程消耗最高

二,查看JAVA进程中哪个线程消耗最高

2.1 导出java运行的线程信息

jstack 进程id(jps查看)

jstack 进程id ps.txt

jstack -l 进程id (窗口打印)

//另外还有一种方式

如果启动方式如下:

nohup java -classpath conf/:my.jar  com.tank.manClass./log.out 21

则执行: kill -3 PID,进程信息会输出到/log.out

2.2 查找最消耗cpu的java线程

jps

找到java进程PID

命令:ps -mp pid -o THREAD,tid,time   或者  ps -Lfp pid

通过%CPU和 TIME,判断占用的线程TID

找到TID,转换成16进制,然后在上面(jstack 进程id ps.txt)导出的文件中搜索,就可以定位到具体的线程,类。

java怎样获取CPU占用率和硬盘占用率

通过jmx可以监控vm内存使用,系统内存使用等,以下是网上某博客代码,特点是通过window和linux命令获得CPU使用率。

利用java程序实现获取计算机cpu利用率和内存使用信息。

package com.amgkaka.performance;   

  

/** *//**  

 * 监视信息的JavaBean类.  

 * @author  amg  

 * @version 1.0   

 * Creation date: 2008-4-25 - 上午10:37:00  

 */  

public class MonitorInfoBean {   

    /** *//** 可使用内存. */  

    private long totalMemory;   

       

    /** *//** 剩余内存. */  

    private long freeMemory;   

       

    /** *//** 最大可使用内存. */  

    private long maxMemory;   

       

    /** *//** 操作系统. */  

    private String osName;   

       

    /** *//** 总的物理内存. */  

    private long totalMemorySize;   

       

    /** *//** 剩余的物理内存. */  

    private long freePhysicalMemorySize;   

       

    /** *//** 已使用的物理内存. */  

    private long usedMemory;   

       

    /** *//** 线程总数. */  

    private int totalThread;   

       

    /** *//** cpu使用率. */  

    private double cpuRatio;   

  

    public long getFreeMemory() {   

        return freeMemory;   

    }   

  

    public void setFreeMemory(long freeMemory) {   

        this.freeMemory = freeMemory;   

    }   

  

    public long getFreePhysicalMemorySize() {   

        return freePhysicalMemorySize;   

    }   

  

    public void setFreePhysicalMemorySize(long freePhysicalMemorySize) {   

        this.freePhysicalMemorySize = freePhysicalMemorySize;   

    }   

  

    public long getMaxMemory() {   

        return maxMemory;   

    }   

  

    public void setMaxMemory(long maxMemory) {   

        this.maxMemory = maxMemory;   

    }   

  

    public String getOsName() {   

        return osName;   

    }   

  

    public void setOsName(String osName) {   

        this.osName = osName;   

    }   

  

    public long getTotalMemory() {   

        return totalMemory;   

    }   

  

    public void setTotalMemory(long totalMemory) {   

        this.totalMemory = totalMemory;   

    }   

  

    public long getTotalMemorySize() {   

        return totalMemorySize;   

    }   

  

    public void setTotalMemorySize(long totalMemorySize) {   

        this.totalMemorySize = totalMemorySize;   

    }   

  

    public int getTotalThread() {   

        return totalThread;   

    }   

  

    public void setTotalThread(int totalThread) {   

        this.totalThread = totalThread;   

    }   

  

    public long getUsedMemory() {   

        return usedMemory;   

    }   

  

    public void setUsedMemory(long usedMemory) {   

        this.usedMemory = usedMemory;   

    }   

  

    public double getCpuRatio() {   

        return cpuRatio;   

    }   

  

    public void setCpuRatio(double cpuRatio) {   

        this.cpuRatio = cpuRatio;   

    }   

}

java查看cpu占用的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java查看进程占用内存大小、java查看cpu占用的信息别忘了在本站进行查找喔。