■ PCリソース情報
【1】 ディスク容量 【2】 JVMメモリ容量 【3】 CPU情報
【1】 ディスク容量
* Windowsの場合「new File("C:/")」、Linuxの場合「new File("/")」を指定し、 getTotalSpace() / getFreeSpace() で取得できるサンプル
import java.io.File; public class Main { public static void main(String[] args) { // !Point! "C:/"を指定 (Linux の場合 "/" を指定) File file = new File("C:/"); long total = file.getTotalSpace(); long free = file.getFreeSpace(); long used = total - free; double usedSpacePercentage = ((double) used / (double) total) * 100.0; System.out.println(String.format("Total:%s, Used:%s, Free:%s, Ratio:%s", total, used, free, usedSpacePercentage)); } }
参考文献
http://d.hatena.ne.jp/kiri-mochi/20101108/1289164507【2】 JVMメモリ容量
Java1.5以上
* MemoryMXBeanクラス を使うhttps://docs.oracle.com/javase/jp/8/docs/api/java/lang/management/MemoryMXBean.html
サンプル
import java.lang.management.ManagementFactory; import java.lang.management.MemoryMXBean; import java.lang.management.MemoryUsage; public class MomoryDemo { public static void main(String[] args) { MemoryMXBean mbean = ManagementFactory.getMemoryMXBean(); MemoryUsage heapUsage = mbean.getHeapMemoryUsage(); long init = heapUsage.getInit(); long used = heapUsage.getUsed(); long committed = heapUsage.getCommitted(); long max = heapUsage.getMax(); System.out.println(String.format("init = %s, used = %s, committed = %s, max = %s.", init, used, committed, max)); MemoryUsage nonHeapUsage = mbean.getNonHeapMemoryUsage(); long initForNonHeap = nonHeapUsage.getInit(); long usedForNonHeap = nonHeapUsage.getUsed(); long committedForNonHeap = nonHeapUsage.getCommitted(); long maxForNonHeap = nonHeapUsage.getMax(); System.out.println(String.format("init = %s, used = %s, committed = %s, max = %s.", initForNonHeap, usedForNonHeap, committedForNonHeap, maxForNonHeap)); } }出力結果
init = 134217728, used = 2044880, committed = 128974848, max = 1888485376. init = 2555904, used = 5301288, committed = 8060928, max = -1.[[https://docs.oracle.com/javase/jp/8/docs/api/java/lang/management/MemoryUsage.html#getMax--]]
より抜粋 public long getMax() メモリー管理に使用できる最大メモリー量(バイト単位)を返します。 最大メモリー・サイズが未定義の場合、このメソッドは-1を返します。参考文献
http://itpro.nikkeibp.co.jp/article/COLUMN/20060605/239936/?rt=nocnt
Java1.5未満
* Runtime.getRuntime().totalMemory() / freeMemory() / freeMemory() で取得できるサンプル
public class Main { public static void main(String[] args) { Runtime runtime = Runtime.getRuntime(); long total = runtime.totalMemory(); long free = runtime.freeMemory(); long used = total - free; long max = runtime.maxMemory(); System.out.println(String.format("Total:%s, Used:%s, Free:%s, Max:%s", total, used, free, max)); } }参考文献
http://www.task-notes.com/entry/20151009/1444369222