javacpu利用率(java进程cpu使用率高排查)

华为云服务器特价优惠火热进行中!

2核2G2兆仅需 38 元;4核4G3兆仅需 79 元。购买时间越长越优惠!更多配置及优惠价格请咨询客服。

合作流程:
1、点击链接注册/关联华为云账号:点击跳转
2、添加客服微信号:cloud7591,确定产品方案、价格方案、服务支持方案等;
3、客服协助购买,并拉微信技术服务群,享受一对一免费技术支持服务;
技术专家在金蝶、华为、腾讯原厂有多年工作经验,并已从事云计算服务8年,可对域名、备案、网站搭建、系统部署、AI人工智能、云资源规划等上云常见问题提供更专业靠谱的服务,对相应产品提供更优惠的报价和方案,欢迎咨询。

今天给各位分享javacpu利用率的知识,其中也会对java进程cpu使用率高排查进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

微信号:cloud7591
如需了解更多,欢迎添加客服微信咨询。
复制微信号

本文目录一览:

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占用率和硬盘占用率

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.util.ArrayList;

import java.util.Arrays;

import java.util.Collections;

import java.util.Comparator;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

public class T {

private static final int DRIVE_TYPE_HARD = 3;

private static final String CHARSET = "GBK";

private static final String CAP_LOAD_PERCENTAGE = "LoadPercentage";

private static final String CAP_CAPACITY = "Capacity";

private static final String CAP_CAPTION = "Caption";

private static final String CAP_DRIVE_LETTER = "DriveLetter";

private static final String CAP_DRIVE_TYPE = "DriveType";

private static final String CAP_FREE_SPACE = "FreeSpace";

private static final ListString CAPS_VOLUME = Arrays.asList(CAP_CAPACITY,

CAP_CAPTION, CAP_DRIVE_LETTER, CAP_DRIVE_TYPE, CAP_FREE_SPACE);

private static final String CMD_CPU = "wmic cpu get " + CAP_LOAD_PERCENTAGE;

private static final String CMD_VOLUME = "wmic volume get " + CAP_CAPACITY

+ "," + CAP_CAPTION + "," + CAP_DRIVE_LETTER + "," + CAP_DRIVE_TYPE + ","

+ CAP_FREE_SPACE;

public static void main(String[] args) throws IOException {

printDiskUsages(getDiskUsages());

printCpuUsage(getCpuLoadPercentage());

}

private static void printDiskUsages(ListDiskUsage diskUsages) {

for (DiskUsage diskUsage : diskUsages) {

System.out.printf("%s占用率:%.2f%%\n", diskUsage.caption, diskUsage.usage);

}

}

private static void printCpuUsage(double cpuLoadPercentage) {

System.out.printf("CPU占用率:%.2f%%\n", cpuLoadPercentage);

}

/**

* 取得 CPU 占用率。

*

* @return

* @throws IOException

*/

private static double getCpuLoadPercentage() throws IOException {

Process process = Runtime.getRuntime().exec(CMD_CPU);

InputStream is = process.getInputStream();

BufferedReader br = new BufferedReader(new InputStreamReader(is, CHARSET));

br.readLine(); // 舍弃标题行

br.readLine(); // 舍弃标题行下空行

String percentageLine = br.readLine();

if (percentageLine == null) {

return 0;

}

return Double.parseDouble(percentageLine.trim());

}

/**

* 取得硬盘占用率。

*

* @return

* @throws IOException

*/

private static ListDiskUsage getDiskUsages() throws IOException {

Process process = Runtime.getRuntime().exec(CMD_VOLUME);

InputStream is = process.getInputStream();

BufferedReader br = new BufferedReader(new InputStreamReader(is, CHARSET));

String captionLine = br.readLine(); // 舍弃标题行

br.readLine(); // 舍弃标题行下空行

MapString, Integer captionToIndex = parseVolumeCaptionLine(captionLine);

String line;

ListDiskUsage result = new ArrayListDiskUsage();

while ((line = br.readLine()) != null) {

if (line.length() == 0) {

// 舍弃空行

continue;

}

DiskUsage diskUsage = parseVolumeLine(line, captionToIndex);

if (diskUsage != null) {

result.add(diskUsage);

}

}

Collections.sort(result, new DiskUsageComparator());

return result;

}

private static MapString, Integer parseVolumeCaptionLine(String captionLine) {

MapString, Integer captionToIndex = new HashMapString, Integer();

for (String caption : CAPS_VOLUME) {

captionToIndex.put(caption, captionLine.indexOf(caption));

}

return captionToIndex;

}

private static DiskUsage parseVolumeLine(String line,

MapString, Integer captionToIndex) {

int driveType = parseVolumeDriveType(line, captionToIndex);

if (driveType != DRIVE_TYPE_HARD) {

return null;

}

String driveLetter = parseVolumeDriveLetter(line, captionToIndex);

if (!isValidDriveLetter(driveLetter)) {

return null;

}

String caption = parseVolumeCaption(line, captionToIndex);

long capacity = parseVolumeCapacity(line, captionToIndex);

long freeSpace = parseVolumeFreeSpace(line, captionToIndex);

return new DiskUsage(caption,

((capacity - freeSpace) / (double) capacity) * 100);

}

private static boolean isValidDriveLetter(String driveLetter) {

if (driveLetter.length() != 2) {

return false;

}

return Character.isUpperCase(driveLetter.charAt(0));

}

private static int parseVolumeDriveType(String line,

MapString, Integer captionToIndex) {

String str = line.substring(captionToIndex.get(CAP_DRIVE_TYPE),

captionToIndex.get(CAP_FREE_SPACE));

return Integer.parseInt(str.trim());

}

private static String parseVolumeDriveLetter(String line,

MapString, Integer captionToIndex) {

String str = line.substring(captionToIndex.get(CAP_DRIVE_LETTER),

captionToIndex.get(CAP_DRIVE_TYPE));

return str.trim();

}

private static String parseVolumeCaption(String line,

MapString, Integer captionToIndex) {

String str = line.substring(captionToIndex.get(CAP_CAPTION),

captionToIndex.get(CAP_DRIVE_LETTER));

return str.trim();

}

private static long parseVolumeCapacity(String line,

MapString, Integer captionToIndex) {

String str = line.substring(captionToIndex.get(CAP_CAPACITY),

captionToIndex.get(CAP_CAPTION));

return Long.parseLong(str.trim());

}

private static long parseVolumeFreeSpace(String line,

MapString, Integer captionToIndex) {

String str = line.substring(captionToIndex.get(CAP_FREE_SPACE));

return Long.parseLong(str.trim());

}

private static class DiskUsageComparator implements ComparatorDiskUsage {

@Override

public int compare(DiskUsage o1, DiskUsage o2) {

return o1.caption.compareTo(o2.caption);

}

}

private static class DiskUsage {

public String caption;

public double usage;

public DiskUsage(String caption, Double usage) {

this.caption = caption;

this.usage = usage;

}

}

}

java 多线程 cpu利用率100%问题,我做了一个程序,10个线程,不到一分钟,cpu就100%了,怎么解决。

一般一个cpu核心可以搭载两个线程,你根据核心去搭载线程,不要乱放线程。

还有你有10个线程同时跑耗时操作最少也要4核的cpu,你可以减少线程或者减少线程中的耗时操作。

如果你是解码或者压缩程序的话那么cpu100%也很正常,如果是socket网络连接你可以看看windows iocp,linux epoll的实现。

java 怎么查看服务器的CPU使用率

1、确定当前系统安装的jdk是1.6版本以上

2、windows系统中有获取cpu使用率的可执行文件exe,只要在java中获取该文件的执行路径,通过Java调用即可。

3、获取操作系统可执行文件目录procCmd

4、调用java的Runtime.getRuntime().exec执行cmd应用程序

5、利用java中sleep来计算睡眠前后cpu的忙碌时间与空闲时间,因为sleep不会释放系统资源

6、根据忙碌时间占总时间的比例来计算cpu使用率!

java多线程的CPU利用率问题,怎么解决

一般一个cpu核心可以搭载两个线程,你根据核心去搭载线程,不要乱放线程。还有你有10个线程同时跑耗时操作最少也要4核的cpu,你可以减少线程或者减少线程中的耗时操作。如果你是解码或者压缩程序的话那么cpu100%也很正常,如果是socket网络连

关于javacpu利用率和java进程cpu使用率高排查的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

发布于 2023-04-08 02:04:02
收藏
分享
海报
38
目录

    忘记密码?

    图形验证码

    复制成功
    微信号: cloud7591
    如需了解更多,欢迎添加客服微信咨询。
    我知道了