这里用最简单的内存溢出的错误来测试:
/**
* 测试JAVA的内存溢出问题
*/
public class MemoryDemo {
private static final Logger logger = LoggerFactory.getLogger(MemoryDemo.class);
private int index = 1;
public void method(){
index++;
//嵌套方法
method();
}
@Test
public void test(){
try {
method();
} catch (StackOverflowError e) {
System.out.println("程序所需要的栈大小 > 允许最大的栈大小,执行深度: " + index);
logger.error(e.toString());
logger.error(e.getMessage());
logger.error("调用method方法出错",e);
}
}
}
那么这三种方法:
1、logger.error(e.toString());
程序所需要的栈大小 > 允许最大的栈大小,执行深度: 18898
16:07:40.490 [main] ERROR com.memory.MemoryDemo - java.lang.StackOverflowError
2、logger.error(e.getMessage());
程序所需要的栈大小 > 允许最大的栈大小,执行深度: 18670
16:08:17.131 [main] ERROR com.memory.MemoryDemo - null
3、logger.error(“调用method方法出错”,e);
程序所需要的栈大小 > 允许最大的栈大小,执行深度: 18510
16:09:08.457 [main] ERROR com.memory.MemoryDemo - 调用method方法出错
java.lang.StackOverflowError: null
at com.memory.MemoryDemo.method(MemoryDemo.java:19) ~[classes/:na]
at com.memory.MemoryDemo.method(MemoryDemo.java:19) ~[classes/:na]
at com.memory.MemoryDemo.method(MemoryDemo.java:19) ~[classes/:na]
at com.memory.MemoryDemo.method(MemoryDemo.java:19) ~[classes/:na]
at com.memory.MemoryDemo.method(MemoryDemo.java:19) ~[classes/:na]