通過java.lang.management 你可以看看JVM是怎麼處理內存的。JVM處理內存分爲兩部分:
Heap堆,加載類和對象的,這個就是垃圾回收器作用的地方。Non-Heap,有些Garbage Collector也作用於此。
看下邊這個例子:
import java.lang.management.ManagementFactory;
import java.lang.management.MemoryMXBean;
import java.lang.management.MemoryUsage;
public class ShowMemory {
static String x;
public static void main(String arg[]) {
ShowMemory sm = new ShowMemory();
sm.show();
x = "";
for(int i=0; i<1000; i++)
x += " string number " + i;
sm.show();
x = null;
sm.show();
MemoryMXBean mem = ManagementFactory.getMemoryMXBean();
mem.gc();
sm.show();
}
void show() {
MemoryMXBean mem = ManagementFactory.getMemoryMXBean();
MemoryUsage heap = mem.getHeapMemoryUsage();
System.out.println("Heap committed=" + heap.getCommitted() +
" init=" + heap.getInit() +
" max=" + heap.getMax() +
" used=" + heap.getUsed());
}
}
import java.lang.management.ManagementFactory;
import java.lang.management.OperatingSystemMXBean;
public class ShowSystem {
public static void main(String arg[]) {
OperatingSystemMXBean op = ManagementFactory.getOperatingSystemMXBean();
System.out.println("Architecture: " + op.getArch());
System.out.println("Processors: " + op.getAvailableProcessors());
System.out.println("System name: " + op.getName());
System.out.println("System version: " + op.getVersion());
System.out.println("Last minute load: " + op.getSystemLoadAverage());
}
}