「看java的使用率」java计算及格率

博主:adminadmin 2022-12-02 02:51:07 62

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

本文目录一览:

如何查看java进程大量占用内存

如何查看java进程大量占用内存

你好,方法如下:

可以直接使用top命令后,查看%MEM的内容。可以选择按进程查看或者按用户查看,如想查看oracle用户的进程内存使用情况的话可以使用如下的命令:

(1)top

top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器

可以直接使用top命令后,查看%MEM的内容。可以选择按进程查看或者按用户查看,如想查看oracle用户的进程内存使用情况的话可以使用如下的命令:

$ top -u oracle

内容解释:

PID:进程的ID

USER:进程所有者

PR:进程的优先级别,越小越优先被执行

NInice:值

VIRT:进程占用的虚拟内存

RES:进程占用的物理内存

SHR:进程使用的共享内存

S:进程的状态。S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值为负数

%CPU:进程占用CPU的使用率

%MEM:进程使用的物理内存和总内存的百分比

TIME+:该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值。

COMMAND:进程启动命令名称

常用的命令:

P:按%CPU使用率排行

T:按MITE+排行

M:按%MEM排行

(2)pmap

可以根据进程查看进程相关信息占用的内存情况,(进程号可以通过ps查看)如下所示:

$ pmap -d 14596

(3)ps

如下例所示:

$ ps -e -o 'pid,comm,args,pcpu,rsz,vsz,stime,user,uid' 其中rsz是是实际内存

$ ps -e -o 'pid,comm,args,pcpu,rsz,vsz,stime,user,uid' | grep oracle | sort -nrk5

其中rsz为实际内存,上例实现按内存排序,由大到小

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;

}

}

}

电脑Java8update内存使用率高

可能是代码原因导致的问题,也可能是其他原因导致的问题。

使用dstat和top查看内存使用最高的应用,查到内存占用最高的是java应用,使用2253M内存,但是这台服务器跑了好几个java,具体哪个进程使用top看下资源情况,使用top,使用dstat可以看到java应用整体内存使用率超过了70%,其中pid为16494的进程一个应用占了28.7的内存,使用ps查看16494的线程情况,命令:psp16494-L-opcpu,pmem,pid,tid,time,tname,cmd,看到16494这个pid的应用产生了很多线程。在分析前需要将17417这个id转换为16进制,方便查找信息12[root@localhost~]#printf"%x\n"17417,440916进制为4409。将pid为16494的应用打印到日志中1[root@localhost~]#jstack-l16494jstack.log。查看内存堆栈信息,1[root@localhost~]#vimjstack.log,[root@localhost~]#vimjstack.log在日志信息中查找刚刚转换的4409。可以看到这个线程状态为WAITING通过查看日志发现有大量的waitingoncondition。1,parkingtowaitfor存在大量线程等待被唤醒,占用大量内存。

怎么通过java程序查看java程序自身的CPU使用率和内存使用情况?

取得进程ID,调用系统API取得相关值(Windows和Linux是不一样的的)。

关于看java的使用率和java计算及格率的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-12-02,除非注明,否则均为首码项目网原创文章,转载请注明出处。