参数-Xms:初始内存大小
参数-Xmx:最大内存大小
代码:
public static void main(String[] args){
long maxMemory = Runtime.getRuntime().maxMemory() ;//返回 Java 虚拟机试图使用的最大内存量。
long totalMemory = Runtime.getRuntime().totalMemory() ;//返回 Java 虚拟机中的内存总量。
System.out.println(“MAX_MEMORY = ” + maxMemory + “(字节)、” + (maxMemory / (double)1024 / 1024) + “MB”);
System.out.println(“TOTAL_MEMORY = ” + totalMemory + “(字节)、” + (totalMemory / (double)1024 / 1024) + “MB”);
}
发现默认的情况下分配的内存是总内存的“1 / 4”、而初始化的内存为“1 / 64”
参数调整:-Xms1024m -Xmx1024m -XX:+PrintGCDetails
代码:
String str = “www.atguigu.com” ;
while(true)
{
str += str + new Random().nextInt(88888888) + new Random().nextInt(999999999) ;
}
调整内存大小:-Xms8m -Xmx8m -XX:+PrintGCDetails
运行结果:
4.1 内存溢出定位工具——MAT
4.2 MAT下载
官网访问地址:https://projects.eclipse.org/projects/tools.mat/downloads
安装插件
4.2 MAT使用
运行参数-XX:+HeapDumpOnOutOfMemoryError如果出现OOM时导出堆到文件