线上内存溢出分析报告
java程序本身有自己的GC垃圾回收机制,一般我们在开发的时候,不需要关注垃圾回收等问题。但往往在实际开发过程中,有些代码运行一直占用内存不释放,从而导致我们的程序会出现内存溢出等情况。下面就实际线上遇到内存溢出做一次简单的分析报告:
1.线上问题
1.1 线上运行top
当我们线上运行这个top命令,发现此事Java占用CPU高达1200+%,一直不降,此事意识到我们的程序出问题了。打开我们的日志,发现如下:
从上面的日志,我们不难发现,内存溢出啦~
2.解决方案
2.1 程序添加堆栈记录
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/home/heapdump.hprof
java -Xms1024m -Xmx1024m -Dfile.encoding=utf-8 -XX:+HeapDumpO