一、junit不使用eclipse自身的jvm参数
知道原因就好改了:
1 单独运行junit,在jvm参数里填加:-Xms128m -Xmx1024m (注:具体参数根据自身机器和需求来确定)
2 ant中单元测试: <junit maxmemory="1024m" printsummary="yes"
haltonfailure="no" fork="yes" forkmode="perBatch">
...
</junit>
3 可以使用以下代码来查看内存状况(outOfMemoryError:Java heap space):
public static void testMemoryUsage() {
Runtime runtime = Runtime.getRuntime();
NumberFormat format = NumberFormat.getInstance();
long mb = 1024*1024;
StringBuilder sb = new StringBuilder();
long maxMemory = runtime.maxMemory();
long allocatedMemory = runtime.totalMemory();
long freeMemory = runtime.freeMemory();
long usedMemory = allocatedMemory - freeMemory;
sb.append("free memory: " + format.format(freeMemory / mb) + "mb,\r\n");
sb.append("used memory: " + format.format(usedMemory / mb) +"mb,\r\n");
sb.append("allocated memory: " + format.format(allocatedMemory / mb) +"mb,\r\n");
sb.append("max memory: " + format.format(maxMemory / mb) + "mb,\r\n");
sb.append("total free memory: " + format.format((freeMemory + (maxMemory - allocatedMemory)) / mb) +" mb");
System.out.println("memory usage:\r\n"+sb);
System.gc();
}
代码执行结果: