总结:在实际工作中,可以直接将初始的堆大小与最大堆大小相等,减少程序运行时垃圾回收的次数,提高效率。
如:-Xms512m -Xmx512m
public class MemoryTest {
public static void main(String[] args) {
System.out.println("最大内存:" + Runtime.getRuntime().maxMemory()/1024/1024 + "M");
System.out.println("可用内存:" + Runtime.getRuntime().freeMemory()/1024/1024 + "M");
System.out.println("已使用内存:" + Runtime.getRuntime().totalMemory()/1024/1024 + "M");
System.out.println("=============================================================");
byte[] b = new byte[200*1024*1024];
System.out.println("分配了200M空间给数组....");
System.out.println("最大内存:" + Runtime.getRuntime().maxMemory()/1024/1024 + "M");
System.out.println("可用内存:" + Runtime.getRuntime().freeMemory()/1024/1024 + "M");
System.out.println("已使用内存:" + Runtime.getRuntime().totalMemory()/1024/1024 + "M");
}
}
打印信息:
如果改为2000,
byte[] b = new byte[2000*1024*1024];
超过了1792M,所以会报内存溢出:
原文:https://www.cnblogs.com/fulongyuanjushi/p/11269517.html