*totalMemory()這個方法返回的是java虛擬機現在已經從操作系統那裏挖過來的內存大小,也就是java虛擬機這個進程當時所佔用的所有 內存。如果在運行java的時候沒有添加*-Xms參數,那麼,在java程序運行的過程的,內存總是慢慢的從操作系統那裏挖的,基本上是用多少挖多少,直 挖到maxMemory()爲止,所以totalMemory()是慢慢增大的。
*freeMemory()是什麼呢,剛纔講到如果在運行java的時候沒有添加-Xms參數,那麼,在java程序運行的過程的,內存總是慢慢的從操 作系統那裏挖的,基本上是用多少挖多
// 手動調用GC
System.gc() ;
//free和use和total均爲KB
long free=0;
long use=0;
long total=0;
int kb=1024;
Runtime rt=Runtime.getRuntime();
total=rt.totalMemory();
free=rt.freeMemory();
use=total-free;
System.out.println("系統內存已用的空間爲:"+use/kb+" MB");
System.out.println("系統內存的空閒空間爲:"+free/kb+" MB");
System.out.println("系統總內存空間爲:"+total/kb+" MB");
// 用於操作系統的管理接口,Java 虛擬機在此操作系統上運行。
OperatingSystemMXBean osmxb = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
long physicalFree=osmxb.getFreePhysicalMemorySize()/kb;
long physicalTotal=osmxb.getTotalPhysicalMemorySize()/kb;
long physicalUse=physicalTotal-physicalFree;
String os=System.getProperty("os.name");
System.out.println("操作系統的版本:"+os);
System.out.println("系統物理內存已用的空間爲:"+physicalFree+" MB");
System.out.println("系統物理內存的空閒空間爲:"+physicalUse+" MB");
System.out.println("總物理內存:"+physicalTotal+" MB");
// 獲得線程總數
ThreadGroup parentThread;
for (parentThread = Thread.currentThread().getThreadGroup(); parentThread.getParent() != null; parentThread = parentThread.getParent()){
int totalThread = parentThread.activeCount();
System.out.println("獲得線程總數:"+totalThread);
}