记一次排查内存溢出问题
今天是有收获的一天
在进行日志上传压力测试时遇到服务器报错OutOfMemoryError: java heap space

之后查看了服务器启动指令有HeapDumpOnOutOfMemoryError 在发生OOM时可以打印当前堆栈信息
/usr/bin/java -Xms1024m -Xmx1024m -Xmn256m -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:-UseGCOverheadLimit -XX:+HeapDumpOnOutOfMemoryError -Dcom.sun.management.jmxremote -Dflume.monitoring.type=http -Dflume.monitoring.port=5653 -cp /usr/local/soc/apache-flume-1.8.0-bin/conf:/usr/local/soc/apache-flume-1.8.0-bin/lib/*:/lib/* -Djava.library.path= org.apache.flume.node.Application --conf-file /usr/local/soc/apache-flume-1.8.0-bin/conf/flume_agent1.conf --name agent1
在当前项目根目录下找到了java_pid3927.hprof
.hprof 就是打印的堆栈信息
打开本地jdk自带的查看该文件的工具C:\Program Files\Java\jdk1.8.0_171\bin\jvisualvm.exe
点击装入选择java_pid3927.hprof 即可打开该文件查看信息
会显示具体报错的线程,点击再回跳转到该报错信息位置
通过报错位置可以查看的代码进行排查