OutOfMemory的三种情况
摘自kakaluyi的<如何定位OutOfMemory的根本原因>,有部分修改
java的OutOfMemory有关Exception和可能出现的方式:
A Exception in thread "main" java.lang.OutOfMemoryError: PermGen space
栈溢出
这部分用于存放局部变量、方法栈帧信息。栈帧太多,也就是函数调用层级过多时就会出现此异常,检查是否有死递归的情况。
今天碰到个内存溢出的问题,解决过程如下:
首先启动时添加参数-XX:+HeapDumpOnOutOfMemoryError,这样当内存溢出时: java.lang.OutOfMemoryError: Java heap space
Dumping heap to java_pid5304.hprof ...
Heap dump file created [85357895 bytes in 2.095 secs]会在eclipse目录下生产内存文件;使用Memory Analyze分析,查看类使用情况,发现是由Map过大引起;查看代码中使用到Map的段,分析,解决问题;
问题over。