前言:这是我踩了两天的坑,得到的最终的结论,希望这篇文章能够给像我这样的小白程序猿一点帮助
原因分析:
就我当前的错误而言,我的错误在于当前运行的程序得到的内存,不支持我的程序的运行,例如:当前分给我的程序只有2G,而我的程序运行起来却用了1.8G,当运行的程序达到最大内存百分之80的时候就会出现溢出的异常
还有就是死循环,一直出创建新的对象,没有进行垃圾回收导致的溢出异常
先看一下我报的错误异常信息:
在我的思路中----------------
首先你得知道你当前运行程序用了当前内存的多少,才能知道你所需要的内存大小
这里使用的是jdk中的一个小插件----VisualVm,这个插件可以看到线程信息,内存大小,cpu等
这个插件在你本机安装jdk/bin/VisualVm.exe目录下,双击打开。
你就会看到线上运行的程序,
1.点击你的程序(1),
2.点击监视你就会看到你的内存信息(红色框框中的信息),当前内存分到。最大值为 2G,
在看蓝色的条条你就能看出当前最顶峰的时候占用的内存是多少,这也是你下边需要扩展的内存大小
怎么判断你的程序占用了多少,点击右上堆Dump ----表 ----大小 你就能看到当前操作的信息
我的是在进行byte[]添加数据库时引发的,内存溢出,你看看这个狗东西一下就用了百分之84的内存,害得我搞了两天,
现在错误原因找到了,那么就想办法进行解决吧
提示:前边说了一大堆的废话,下边就是解决办法
已经知道了,是因为分发的内存不够导致的那么就进行扩大内存
我在网上找了好多都是让我在idea路径下 help--Edit Custom Vm Options中修改 -Xms 以及 -Xmx 这两个值,当前我进行修改后并没有生效,这也是让我困惑的原因(有知道为什么的大佬请指点一下小弟)
解决方案:
线上解决方案:
我这个分的内存是4G,你可能根据我上边所得你的顶峰值来计算得处你的扩展的内存大小
部署环境下:Liunx下
java -jar -Xms -Xmx jar包