一、堆内存调优参数
-Xms 堆空间的最小值,默认为物理内存的1/64 -Xmx 堆空间的最大值,默认为物理内存的1/4 -XX:+PrintGCDetails 输出详细的GC处理日志
二、获取堆内存的默认物理内存
/**
* @Author : 一叶浮萍归大海
* @Date: 2023/11/16 14:50
* @Description: 获取堆内存的默认物理内存大小
*/
public class HeapMainApp {
public static void main(String[] args) {
// Java虚拟机试图使用的最大内存
long maxMemory = Runtime.getRuntime().maxMemory();
// 当前Java虚拟机中的内存总量
long totalMemory = Runtime.getRuntime().totalMemory();
System.out.println("【-Xmx】最大内存 = " + maxMemory + " (字节)、" + (maxMemory / (double) 1024 / 1024) + " (MB)");
System.out.println("【-Xms】总内存 = " + totalMemory + " (字节)、" + (totalMemory / (double) 1024 / 1024) + " (MB)");
}
}
三、修改堆内存大小
-Xms1024m -Xmx1024m -XX:+PrintGCDetails
四、OOM异常演示
/**
* @Author : 一叶浮萍归大海
* @Date: 2023/11/16 15:31
* @Description: 修改堆内存的最大值和最小值为10m,方便观察GC的回收过程
* -Xms10m -Xmx10m -XX:+PrintGCDetails
*/
public class OomMainApp {
public static void main(String[] args) {
String message = "欧耶,今天星期五!";
while (true) {
message += message + new Random().nextInt(88888888) + new Random(99999999);
}
}
}
五、获取本机的cpu核数
/**
* @Author : 一叶浮萍归大海
* @Date: 2023/11/16 14:39
* @Description: 获取本机的电脑核数
*/
public class CpuMainApp {
public static void main(String[] args) {
System.out.println(Runtime.getRuntime().availableProcessors());
}
}