元空间不包含堆空间内: -Xms10m Xmx10m 设置jvm启动参数初始堆空间和最大堆空间为10m,使用JDK自带的jvisualvm工具中的Visual GC插件可以看到Eden +Survivor 0 + Survivor 1 + Old Generation = 10m,Metaspace = 9.5m .由此可见堆空间不包括元空间.栈/堆/方法区
import java.math.BigDecimal;
/**
* -Xmx10m -Xmx10m -XX:+PrintGCDetials
* 设置堆起始内存和最大内存为10m, 打印堆和垃圾回收信息
*/
public class TestMain {
public static void main(String[] args) {
//程序当前堆内存(字节)
BigDecimal totalMemoryByte = new BigDecimal(Runtime.getRuntime().totalMemory());
//程序当前堆内存(兆)
BigDecimal totalMemoryM = totalMemoryByte.divide(new BigDecimal(1024*1024));
System.out.println("程序当前堆内存:"+totalMemoryM+"m");
//程序最大堆内存(字节)
BigDecimal maxMemoryByte = new BigDecimal(Runtime.getRuntime().maxMemory());
//程序最大堆内存(兆)
BigDecimal maxMemoryM = maxMemoryByte.divide(new BigDecimal(1024*1024));
System.out.println("程序最大堆内存:"+maxMemoryM+"m");
try {
Thread.sleep(1000000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
打印结果:
程序当前堆内存:9.5m
程序最大堆内存:9.5m
结果说明:
我设置的起始内存和最大内存为10m,但是Runtime取到的却是9.5m,因为Runtime取的堆内存是指可使用的堆内存,在年轻代中的
两个survivor只有一个会被正在使用(两个不会被同时使用).所以只算了一个survivor区,一个survivor区的大小是0.5m,所以
得到的大小是9.5m
<< · Back Index ·>>
书信,让书法史有了温度 书论 文 | 书艺课堂 (ID: shuyiketang) 转载请联系授权 书友们,大家好,我是书艺君。今天和大家 ...
如果你喜歡龍舌蘭這種植物,那一定不要錯過笹之雪(Agave victoriae-reginae),它也叫皇後龍舌蘭或鬼腳掌(之前價格超貴,現...