例えばlinux htop:http://scr.hu/1det/r1ghlで、私のアプリケーションCPU使用量をpid:27914でチェックインすると51%が印刷されます。これを行う方法?アプリケーションに独自のPIDを取得するにはどうすればよいですか。どのように外部ライブラリなしでJavaでアプリケーションによってCPU使用量を取得するには?
public static int calcCPU(long cpuStartTime, long elapsedStartTime, int cpuCount) {
long end = System.nanoTime();
long totalAvailCPUTime = cpuCount * (end - elapsedStartTime);
long totalUsedCPUTime = ManagementFactory.getThreadMXBean().getCurrentThreadCpuTime() - cpuStartTime;
//log("Total CPU Time:" + totalUsedCPUTime + " ns.");
//log("Total Avail CPU Time:" + totalAvailCPUTime + " ns.");
float per = ((float) totalUsedCPUTime * 100)/(float) totalAvailCPUTime;
log(per);
return (int) per;
}
static boolean isPrime(int n) {
// 2 is the smallest prime
if (n <= 2) {
return n == 2;
}
// even numbers other than 2 are not prime
if (n % 2 == 0) {
return false;
}
// check odd divisors from 3
// to the square root of n
for (int i = 3, end = (int) Math.sqrt(n); i <= end; i += 2) {
if (n % i == 0) {
return false;
}
}
return true;
}
public static void main(String[] args) throws ParseException, NoSuchAlgorithmException {
int mb = 1024 * 1024;
int gb = 1024 * 1024 * 1024;
/* PHYSICAL MEMORY USAGE */
System.out.println("\n**** Sizes in Mega Bytes ****\n");
com.sun.management.OperatingSystemMXBean operatingSystemMXBean = (com.sun.management.OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
//RuntimeMXBean runtimeMXBean = ManagementFactory.getRuntimeMXBean();
//operatingSystemMXBean = (com.sun.management.OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
com.sun.management.OperatingSystemMXBean os = (com.sun.management.OperatingSystemMXBean) java.lang.management.ManagementFactory.getOperatingSystemMXBean();
for (int i = 0; i < 30; i++) {
long start = System.nanoTime();
// log(start);
//number of available processors;
int cpuCount = ManagementFactory.getOperatingSystemMXBean().getAvailableProcessors();
Random random = new Random(start);
int seed = Math.abs(random.nextInt());
log("\n \n CPU USAGE DETAILS \n\n");
log("Starting Test with " + cpuCount + " CPUs and random number:" + seed);
int primes = 10000;
//
long startCPUTime = ManagementFactory.getThreadMXBean().getCurrentThreadCpuTime();
start = System.nanoTime();
while (primes != 0) {
if (isPrime(seed)) {
primes--;
}
seed++;
}
float cpuPercent = calcCPU(startCPUTime, start, cpuCount);
log("CPU USAGE : " + cpuPercent + " % ");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
}
}
try {
Thread.sleep(500);
} catch (Exception ignored) {
}
}
私はこれを試してみましたが、私は私は1つのアプリケーション
これを確認できるライブラリをお届けしますか? – Larry
@Larry私は私のコメントを編集します、上記を参照してください。 –