发生场景以及原因:
在跑程序的时候,因为程序内的converter对象较多,数据量较大,所以造成了跑程序的时候jvm内存溢出。
解决方式:
1、设置jvm内存大小
-Xmx 1500m
将虚拟机内存调整为1.5g
再次运行程序,内存依然溢出
2、去掉一些无用对象加载,优化了代码,并在一些内部变量的大对象加载的方法结束部加上System.gc();
希望能让gc回收掉一些不用的对象
再次运行程序,内存溢出
调整后溢出原因:System.gc();只是为jvm做个提示,告诉jvm内存堆之中的无用对象该回收,可是gc的回收机制是有一定时限的,并非调用该语句System.gc();就能立刻回收掉垃圾对象,所以 依然造成内存溢出
3、最后写了对象创建的动态代理
将一些大对象的创建方式改为若引用
然后调用gc。
再次运行程序 OK;