内存溢出 Java heap space 解决分析
项目背景
springboot项目发生了 java.lang.OutOfMemoryError: Java heap space
采取措施
1、在项目启动时,增加参数
java -jar -Xms128m -Xmx128m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=c:\log demo.jar
模拟崩溃
## 代码的某个片段中,植入一段死循环代码
List<String> list=new ArrayList<>();
while (true){
list.add("AAAAAAAAAAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
}
启动后,启动程序时,会进行内存异常,然后会把log日志文件,丢入到此目录中
使用工具分析
使用Jdk自带的 Java VisualVM 进行分析
文件载入后,直接看概要,可以快速分析问题发生点
点击看详情,可以发现,在某个控制器中,在添加List时出错了
使用重量级 jprofiler 监测工具进行监测
下载地址:www.ej-technologies.com/download/jp…
先根据内存大小进行排序,然后选出内存占用最大的
找出来元素后,在图表中显示
根据图表,找出泄露语句