通过java 自带 jvm 工具排除内存溢出问题。

这个项目是一个quartz的互联网爬虫项目;
早晨来了发现项目出现异常GC overhead limit exceeded 意思就是系统自动清理后 剩余空间不到百分之二了,马上就要溢出了。
然后查看了一下,通过jdk下面的jvisualvm.exe和jconsole.exe进行检测。
然后看到老年代空间在每一次循环后都有阶梯样的固定上升,通过查看主要是字符串类多。
然后找到了一个解决办法,通过System.gc();来解决。前提是在方法模块外再增加一个方法,否则清理不干净。
然后发现可以实现,然后继续寻找程序中的问题,发现一个全局变量list最后没有清理而是从新赋值了一个新的new arrayList,导致以前的实例并没有清除(具体原因还不太清楚为什么系统不会自动清除),然后改成list.clear(); 这样老年代数据异常消失。
第一次接触jvm,虽然很简单,但是给我调试程序有了一个新的思路,后边几天学习一下jvm配置调优。

你可能感兴趣的:(jvm)