虚拟机参数
1.堆分配参数
测试代码
package com.kennosaur.jvm;
public class Test01 {
public static void main(String[] args) {
//-XX:+UseCompressedOops -XX:-UseLargePagesIndividualAlllocation
//-Xms5m -Xmx20m -XX:+PrintGCDetails -XX:+UseSerialGC -XX:+PrintCommandLineFlags
//-XX:+PrintGCDetails
//-XX:+PrintCommandLineFlags
//-XX:+PrintGC -Xms5m -Xmx20m -XX:+UseSerialGC -XX:+PrintGCDetails
//查看GC信息
System.out.println("max memory:" +Runtime.getRuntime().maxMemory());
System.out.println("free memory:" + Runtime.getRuntime().freeMemory());
System.out.println("total memory:" + Runtime.getRuntime().totalMemory());
byte[] b1 = new byte[1*1024*1024];
System.out.println("分配了1M");
System.out.println("max memory:" +Runtime.getRuntime().maxMemory());
System.out.println("free memory:" + Runtime.getRuntime().freeMemory());
System.out.println("total memory:" + Runtime.getRuntime().totalMemory());
byte[] b2 = new byte[4*1024*1024];
System.out.println("分配了4M");
System.out.println("max memory:" +Runtime.getRuntime().maxMemory());
System.out.println("free memory:" + Runtime.getRuntime().freeMemory());
System.out.println("total memory:" + Runtime.getRuntime().totalMemory());
}
}
测试代码
package com.kennosaur.jvm;
public class Test02 {
public static void main(String[] args) {
//第一次配置 eden 2 from 1 to 1
//-Xms20m -Xmx20m -Xmn1m -XX:SurvivorRatio=2 -XX:+PrintGCDetails -XX:+UseSerialGC
//第二次配置
//-Xms20m -Xmx20m -Xmn7m -XX:SurvivorRatio=2 -XX:+PrintGCDetails -XX:+UseSerialGC
//第三次配置
///-XX:NewRatio=老年代/新生代
//-Xms20m -Xmx20m -Xmn1m -XX:NewRatio=2 -XX:+PrintGCDetails -XX:+UseSerialGC
byte[] b = null;
//连续向系统申请10MB空间
for (int i = 0; i < 10; i++) {
b = new byte[1*1024*1024];
}
System.out.println("====end====");
}
}
测试代码
package com.kennosaur.jvm;
import java.util.Vector;
public class Test03 {
public static void main(String[] args) {
//-Xms2m -Xmx2m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=d:/test03.dump
//堆内存溢出
Vector v = new Vector();
for (int i = 0; i < 5; i++) {
v.add(new Byte[1*1024*1024]);
}
System.out.println("=====end=====");
}
}