描述:在JVM中如果98%的时间是用于GC(Garbage Collection)且可用的 Heap size 不足2%的时候将抛出异常信息
原因:
1、程序中某处出现了死循环
2、整个程序或某个功能占用的内存过大,超出了jvm堆设置的最大值
解决方案:
手动调配jvm的运行参数
-Xms:初始值 物理内存的1/64
-Xmx:最大值 物理内存的1/4
-Xmn:最小值 -Xmn一般为1/4的-Xmx值
-XX:PermSize 非堆内存初始值 默认是物理内存的1/64
XX:MaxPermSize 最大非堆内存的大小 默认是物理内存的1/4
Heap Size的设置不宜太大,也不能太小,太小了会影响响应速度,太大会造成空间浪费
建议: Heap Size 最大最好不要超过可用物理内存的80%,将-Xms和-Xmx选项设置为相同,而-Xmn为1/4的-Xmx值
在进行数据量很大的导出时,很有可能会出现这种问题
解决方案:
把 -XX:PermSize 和 XX:MaxPermSize 的值设置上
例如:
nohup java -Xms128m -Xmx256m -XX:PermSize=64m -XX:MaxPermSize=512m -jar jar包名称 &