记一次java.lang.OutOfMemoryError:GC overhead limit exceeded
java.lang.OutOfMemoryError:GC overhead limit exceeded
当GC为释放很小空间占用大量时间时会抛出此异常(Sun 官方对此的定义:超过98%的时间用来做GC并且回收了不到2%的堆内存时会抛出此异常)。
发生情况描述:
在处理文件数据时,因为数据量过大,一个txt文件中大约近百万行数据,读取这个文件并对数据进行业务处理的过程中,抛出了异常。
由于整个过程代码量也比较大,找了许久都没找到出问题的原因。
解决方案:
通过查找大量资料,使用了JProfiler这款插件,。
首先IDEA安装JProfiler插件,
在Marketplace中搜索JProfiler,安装重启;再下载客户端。安装完毕后,启动程序使用。
网上安装教程和使用教程很多,在这里就不重复了。通过这个软件,成功的找到了占大量内存的那一句代码,通过优化,成功解决问题。
可以通过脚本之家查看功能介绍、安装和使用说明https://www.jb51.net/softs/608640.html